summaryrefslogtreecommitdiff
path: root/model.js
blob: 436a0a32f1eca7dd378f1aa1f319bb189501652d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* jshint esnext:true */
"use strict";

module.exports = (seq, Seq) => {
    let // core data
        Match = seq.import("./models/match.js"),
        Asset = seq.import("./models/asset.js"),
        Roster = seq.import("./models/roster.js"),
        Participant = seq.import("./models/participant.js"),
        Player = seq.import("./models/player.js"),

        // Guilds
        Team = seq.import("./models/team.js"),
        TeamMembership = seq.import("./models/team_membership.js"),
        User = seq.import("./models/users.js"),

        // Tournament
        Tournament = seq.import("./models/tournament.js"),
        TournamentParticipants = seq.import("./models/tournament_participants.js"),

        // mappings
        Item = seq.import("./models/item.js"),
        Hero = seq.import("./models/hero.js"),
        Series = seq.import("./models/series.js"),
        GameMode = seq.import("./models/game_mode.js"),
        Role = seq.import("./models/role.js"),
        Filter = seq.import("./models/filter.js"),
        Skilltier = seq.import("./models/skill_tier.js"),
        Build = seq.import("./models/build.js"),
        Region = seq.import("./models/region.js"),

        // data stats
        ParticipantStats = seq.import("./models/participant_stats.js"),
        ParticipantPhases = seq.import("./models/participant_phases.js"),

        // stats aggregations
        PlayerPoint = seq.import("./models/player_point.js"),
        GlobalPoint = seq.import("./models/global_point.js"),

        // registered special users
        Gamer = seq.import("./models/gamer.js"),

        // misc
        Keys = seq.import("./models/keys.js");


    Roster.belongsTo(Match, { foreignKey: "match_api_id", targetKey: "api_id" });
    Participant.belongsTo(Roster, { foreignKey: "roster_api_id", targetKey: "api_id" });
    Participant.belongsTo(Match, { foreignKey: "match_api_id", targetKey: "api_id" });
    Participant.belongsTo(Player, { foreignKey: "player_api_id", targetKey: "api_id" });
    Participant.hasMany(ParticipantStats, { foreignKey: "participant_api_id", sourceKey: "api_id" });
    Participant.hasMany(ParticipantPhases, { foreignKey: "participant_api_id", sourceKey: "api_id" });
    ParticipantPhases.belongsTo(Participant, { foreignKey: "participant_api_id", targetKey: "api_id" });
    Participant.belongsTo(GameMode, { foreignKey: "game_mode_id" });
    Participant.belongsTo(Hero, { foreignKey: "hero_id" });
    Participant.belongsTo(Series, { foreignKey: "series_id" });
    Participant.belongsTo(Role, { foreignKey: "role_id" });
    Participant.belongsTo(Region, { foreignKey: "shard_id", targetKey: "name" });
    Match.hasMany(Asset, { foreignKey: "match_api_id", sourceKey: "api_id",  });  // TODO with hasOne, suddenly uses match.id as source key?!
    Match.hasMany(Roster, { foreignKey: "match_api_id", sourceKey: "api_id" });
    Roster.hasMany(Participant, { foreignKey: "roster_api_id", sourceKey: "api_id" });
    Player.hasMany(PlayerPoint, { foreignKey: "player_api_id", sourceKey: "api_id" });
    Player.belongsTo(Region, { foreignKey: "shard_id", targetKey: "name" });
    PlayerPoint.belongsTo(Player, { foreignKey: "player_api_id", targetKey: "api_id" });
    PlayerPoint.belongsTo(GameMode, { foreignKey: "game_mode_id" });
    PlayerPoint.belongsTo(Hero, { foreignKey: "hero_id" });
    PlayerPoint.belongsTo(Series, { foreignKey: "series_id" });
    PlayerPoint.belongsTo(Role, { foreignKey: "role_id" });

    return {
        Match, Roster, Participant, Player, Asset,
        Team, TeamMembership, User,
        Tournament, TournamentParticipants,
        Item, Hero, Series, GameMode, Role, Filter, Skilltier, Build, Region,
        ParticipantStats, ParticipantPhases,
        PlayerPoint, GlobalPoint,
        Gamer,
        Keys
    };
};