@winible/winible-typed 2.13.0 → 2.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/20230104055346-oddsjam.js +501 -0
- package/dist/migrations/20230104055346-oddsjam.js.map +1 -0
- package/dist/migrations/20230104233909-markets.js +28 -0
- package/dist/migrations/20230104233909-markets.js.map +1 -0
- package/dist/migrations/20230105005418-sportsbook.js +24 -0
- package/dist/migrations/20230105005418-sportsbook.js.map +1 -0
- package/dist/migrations/20230106044910-player-result.js +59 -0
- package/dist/migrations/20230106044910-player-result.js.map +1 -0
- package/dist/migrations/20230206061925-stale.js +13 -0
- package/dist/migrations/20230206061925-stale.js.map +1 -0
- package/dist/migrations/20230313175015-league-user.js +29 -0
- package/dist/migrations/20230313175015-league-user.js.map +1 -0
- package/dist/migrations/20230405141245-deprecate-agencies.js +9 -0
- package/dist/migrations/20230405141245-deprecate-agencies.js.map +1 -0
- package/dist/migrations/20230405142440-deprecate-unused-tables.js +23 -0
- package/dist/migrations/20230405142440-deprecate-unused-tables.js.map +1 -0
- package/dist/migrations/20230410144940-deprecate-consent-people.js +9 -0
- package/dist/migrations/20230410144940-deprecate-consent-people.js.map +1 -0
- package/dist/migrations/20230410174328-deprecate-consent-people-table.js +9 -0
- package/dist/migrations/20230410174328-deprecate-consent-people-table.js.map +1 -0
- package/dist/migrations/20230410181920-migrate-credit-payments-to-transactions.js +9 -0
- package/dist/migrations/20230410181920-migrate-credit-payments-to-transactions.js.map +1 -0
- package/dist/migrations/20230410202433-migrate-credit-payments-fields.js +12 -0
- package/dist/migrations/20230410202433-migrate-credit-payments-fields.js.map +1 -0
- package/dist/migrations/20230410211059-deprecate-credit-purchases.js +9 -0
- package/dist/migrations/20230410211059-deprecate-credit-purchases.js.map +1 -0
- package/dist/migrations/20230410212035-deprecate-dashboard_user_permissions.js +10 -0
- package/dist/migrations/20230410212035-deprecate-dashboard_user_permissions.js.map +1 -0
- package/dist/migrations/20230410212324-deprecate-non-breaking-tables.js +34 -0
- package/dist/migrations/20230410212324-deprecate-non-breaking-tables.js.map +1 -0
- package/dist/migrations/20230411054826-create-users-table.js +141 -0
- package/dist/migrations/20230411054826-create-users-table.js.map +1 -0
- package/dist/migrations/20230411202848-migrate_transactions_table.js +24 -0
- package/dist/migrations/20230411202848-migrate_transactions_table.js.map +1 -0
- package/dist/migrations/20230411203543-migrate_league_users.js +9 -0
- package/dist/migrations/20230411203543-migrate_league_users.js.map +1 -0
- package/dist/migrations/20230411205324-migrate_league.js +13 -0
- package/dist/migrations/20230411205324-migrate_league.js.map +1 -0
- package/dist/migrations/20230411221159-migrate_media.js +9 -0
- package/dist/migrations/20230411221159-migrate_media.js.map +1 -0
- package/dist/migrations/20230411221327-migrate_media_asset.js +10 -0
- package/dist/migrations/20230411221327-migrate_media_asset.js.map +1 -0
- package/dist/migrations/20230411221842-migrate_media_asset_fields.js +10 -0
- package/dist/migrations/20230411221842-migrate_media_asset_fields.js.map +1 -0
- package/dist/migrations/20230411222018-migrate_notifications.js +25 -0
- package/dist/migrations/20230411222018-migrate_notifications.js.map +1 -0
- package/dist/migrations/20230412190423-migrate_purchased_contents.js +10 -0
- package/dist/migrations/20230412190423-migrate_purchased_contents.js.map +1 -0
- package/dist/migrations/20230412202031-migrate_other_fields.js +27 -0
- package/dist/migrations/20230412202031-migrate_other_fields.js.map +1 -0
- package/dist/migrations/20230412213952-deprecate_phone_users_and_phone_owners.js +27 -0
- package/dist/migrations/20230412213952-deprecate_phone_users_and_phone_owners.js.map +1 -0
- package/dist/scripts/cleanupRecurlyPlans.js +50 -0
- package/dist/scripts/cleanupRecurlyPlans.js.map +1 -0
- package/dist/scripts/deleteMalformedImages.js +87 -0
- package/dist/scripts/deleteMalformedImages.js.map +1 -0
- package/dist/scripts/test.js +18 -0
- package/dist/scripts/test.js.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/recurlyInstance.js +33 -0
- package/dist/src/recurlyInstance.js.map +1 -0
- package/dist/src/types.js +35 -0
- package/dist/src/types.js.map +1 -0
- package/dist/support/index.js +19 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/slack-client.js +51 -0
- package/dist/support/slack-client.js.map +1 -0
- package/dist/support/uploadcare.js +143 -0
- package/dist/support/uploadcare.js.map +1 -0
- package/dist/support/utils.js +69 -0
- package/dist/support/utils.js.map +1 -0
- package/dist/typed-model/application.js +66 -0
- package/dist/typed-model/application.js.map +1 -0
- package/dist/typed-model/content-like.js +70 -0
- package/dist/typed-model/content-like.js.map +1 -0
- package/dist/typed-model/index.js +61 -0
- package/dist/typed-model/index.js.map +1 -0
- package/dist/typed-model/integration.js +59 -0
- package/dist/typed-model/integration.js.map +1 -0
- package/dist/typed-model/league-on-users.js +60 -0
- package/dist/typed-model/league-on-users.js.map +1 -0
- package/dist/typed-model/league-user.js +60 -0
- package/dist/typed-model/league-user.js.map +1 -0
- package/dist/typed-model/league.js +35 -0
- package/dist/typed-model/league.js.map +1 -0
- package/dist/typed-model/media-asset.js +64 -0
- package/dist/typed-model/media-asset.js.map +1 -0
- package/dist/typed-model/media.js +55 -0
- package/dist/typed-model/media.js.map +1 -0
- package/dist/typed-model/notification-preference.js +54 -0
- package/dist/typed-model/notification-preference.js.map +1 -0
- package/dist/typed-model/notification.js +85 -0
- package/dist/typed-model/notification.js.map +1 -0
- package/dist/typed-model/pb-sequelize.js +25 -0
- package/dist/typed-model/pb-sequelize.js.map +1 -0
- package/dist/typed-model/post.js +119 -0
- package/dist/typed-model/post.js.map +1 -0
- package/dist/typed-model/posts-on-users.js +93 -0
- package/dist/typed-model/posts-on-users.js.map +1 -0
- package/dist/typed-model/recurly-account.js +34 -0
- package/dist/typed-model/recurly-account.js.map +1 -0
- package/dist/typed-model/sport-on-posts.js +59 -0
- package/dist/typed-model/sport-on-posts.js.map +1 -0
- package/dist/typed-model/sport.js +30 -0
- package/dist/typed-model/sport.js.map +1 -0
- package/dist/typed-model/store.js +139 -0
- package/dist/typed-model/store.js.map +1 -0
- package/dist/typed-model/subscribers-on-creators.js +65 -0
- package/dist/typed-model/subscribers-on-creators.js.map +1 -0
- package/dist/typed-model/subscription-coupon.js +88 -0
- package/dist/typed-model/subscription-coupon.js.map +1 -0
- package/dist/typed-model/subscription-plan-on-post.js +55 -0
- package/dist/typed-model/subscription-plan-on-post.js.map +1 -0
- package/dist/typed-model/subscription-plan-on-users.js +133 -0
- package/dist/typed-model/subscription-plan-on-users.js.map +1 -0
- package/dist/typed-model/subscription-plan.js +81 -0
- package/dist/typed-model/subscription-plan.js.map +1 -0
- package/dist/typed-model/subscription-pricing-option-on-coupons.js +55 -0
- package/dist/typed-model/subscription-pricing-option-on-coupons.js.map +1 -0
- package/dist/typed-model/subscription-pricing-option.js +63 -0
- package/dist/typed-model/subscription-pricing-option.js.map +1 -0
- package/dist/typed-model/transaction.js +110 -0
- package/dist/typed-model/transaction.js.map +1 -0
- package/dist/typed-model/user.js +199 -0
- package/dist/typed-model/user.js.map +1 -0
- package/dist/typed-model/users_on_creators.js +71 -0
- package/dist/typed-model/users_on_creators.js.map +1 -0
- package/dist/typed-model/withdrawal.js +33 -0
- package/dist/typed-model/withdrawal.js.map +1 -0
- package/dist/webhooks/index.js +48 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/payment/index.js +9 -0
- package/dist/webhooks/payment/index.js.map +1 -0
- package/dist/webhooks/payment/refund.js +39 -0
- package/dist/webhooks/payment/refund.js.map +1 -0
- package/package.json +1 -1
- package/typed-model/index.ts +2 -0
- package/typed-model/sport-on-posts.ts +80 -0
- package/typed-model/sport.ts +46 -0
@@ -0,0 +1,199 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const sequelize_1 = require("sequelize");
|
7
|
+
const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
|
8
|
+
const types_1 = require("../src/types");
|
9
|
+
// order of InferAttributes & InferCreationAttributes is important.
|
10
|
+
class User extends sequelize_1.Model {
|
11
|
+
}
|
12
|
+
User.init({
|
13
|
+
id: {
|
14
|
+
type: sequelize_1.DataTypes.BIGINT,
|
15
|
+
primaryKey: true,
|
16
|
+
allowNull: false,
|
17
|
+
defaultValue: pb_sequelize_1.default.fn("next_id"),
|
18
|
+
},
|
19
|
+
phoneNumber: {
|
20
|
+
type: sequelize_1.DataTypes.STRING,
|
21
|
+
allowNull: true,
|
22
|
+
field: "phone_number",
|
23
|
+
unique: true,
|
24
|
+
},
|
25
|
+
firstName: {
|
26
|
+
type: sequelize_1.DataTypes.STRING,
|
27
|
+
allowNull: true,
|
28
|
+
field: "first_name",
|
29
|
+
},
|
30
|
+
lastName: {
|
31
|
+
type: sequelize_1.DataTypes.STRING,
|
32
|
+
allowNull: true,
|
33
|
+
field: "last_name",
|
34
|
+
},
|
35
|
+
username: {
|
36
|
+
type: sequelize_1.DataTypes.STRING,
|
37
|
+
field: "username",
|
38
|
+
},
|
39
|
+
email: {
|
40
|
+
type: sequelize_1.DataTypes.STRING,
|
41
|
+
field: "email",
|
42
|
+
},
|
43
|
+
password: {
|
44
|
+
type: sequelize_1.DataTypes.STRING,
|
45
|
+
field: "password",
|
46
|
+
},
|
47
|
+
emailVerified: {
|
48
|
+
type: sequelize_1.DataTypes.BOOLEAN,
|
49
|
+
field: "email_verified",
|
50
|
+
defaultValue: true,
|
51
|
+
},
|
52
|
+
userStatus: {
|
53
|
+
type: sequelize_1.DataTypes.ENUM(...Object.values(types_1.UserStatus)),
|
54
|
+
field: "user_status",
|
55
|
+
defaultValue: types_1.UserStatus.ACTIVE,
|
56
|
+
},
|
57
|
+
userRole: {
|
58
|
+
type: sequelize_1.DataTypes.ENUM(...Object.values(types_1.UserRole)),
|
59
|
+
field: "user_role",
|
60
|
+
defaultValue: types_1.UserRole.USER,
|
61
|
+
},
|
62
|
+
bio: {
|
63
|
+
type: sequelize_1.DataTypes.STRING(1000),
|
64
|
+
field: "bio",
|
65
|
+
},
|
66
|
+
headline: {
|
67
|
+
type: sequelize_1.DataTypes.STRING,
|
68
|
+
field: "headline",
|
69
|
+
},
|
70
|
+
avatarUrl: {
|
71
|
+
type: sequelize_1.DataTypes.STRING,
|
72
|
+
field: "avatar_url",
|
73
|
+
},
|
74
|
+
twitterUrl: {
|
75
|
+
type: sequelize_1.DataTypes.STRING,
|
76
|
+
field: "twitter_url",
|
77
|
+
},
|
78
|
+
tiktokUrl: {
|
79
|
+
type: sequelize_1.DataTypes.STRING,
|
80
|
+
field: "tiktok_url",
|
81
|
+
},
|
82
|
+
instagramUrl: {
|
83
|
+
type: sequelize_1.DataTypes.STRING,
|
84
|
+
field: "instagram_url",
|
85
|
+
},
|
86
|
+
discordUrl: {
|
87
|
+
type: sequelize_1.DataTypes.STRING,
|
88
|
+
field: "discord_url",
|
89
|
+
},
|
90
|
+
telegramUrl: {
|
91
|
+
type: sequelize_1.DataTypes.STRING,
|
92
|
+
field: "telegram_url",
|
93
|
+
},
|
94
|
+
personalSiteUrl: {
|
95
|
+
type: sequelize_1.DataTypes.STRING,
|
96
|
+
field: "personal_site_url",
|
97
|
+
},
|
98
|
+
bannerImageUrl: {
|
99
|
+
type: sequelize_1.DataTypes.STRING,
|
100
|
+
field: "banner_image_url",
|
101
|
+
},
|
102
|
+
videoUrl: {
|
103
|
+
type: sequelize_1.DataTypes.STRING,
|
104
|
+
field: "video_url",
|
105
|
+
},
|
106
|
+
stateCode: {
|
107
|
+
type: sequelize_1.DataTypes.STRING,
|
108
|
+
field: "state_code",
|
109
|
+
},
|
110
|
+
profit: {
|
111
|
+
type: sequelize_1.DataTypes.INTEGER,
|
112
|
+
field: "profit",
|
113
|
+
defaultValue: 0,
|
114
|
+
},
|
115
|
+
units: {
|
116
|
+
type: sequelize_1.DataTypes.INTEGER,
|
117
|
+
field: "units",
|
118
|
+
defaultValue: 0,
|
119
|
+
},
|
120
|
+
referringUserId: {
|
121
|
+
type: sequelize_1.DataTypes.STRING,
|
122
|
+
field: "referring_user_id",
|
123
|
+
},
|
124
|
+
referralPercentage: {
|
125
|
+
type: sequelize_1.DataTypes.BIGINT,
|
126
|
+
field: "referral_percentage",
|
127
|
+
defaultValue: 3,
|
128
|
+
},
|
129
|
+
winPercentage: {
|
130
|
+
type: sequelize_1.DataTypes.BIGINT,
|
131
|
+
field: "win_percentage",
|
132
|
+
},
|
133
|
+
platformFee: {
|
134
|
+
type: sequelize_1.DataTypes.INTEGER,
|
135
|
+
field: "platform_fee",
|
136
|
+
defaultValue: 20,
|
137
|
+
},
|
138
|
+
profileViews: {
|
139
|
+
type: sequelize_1.DataTypes.INTEGER,
|
140
|
+
field: "profile_views",
|
141
|
+
defaultValue: 0,
|
142
|
+
},
|
143
|
+
masspayUserToken: {
|
144
|
+
type: sequelize_1.DataTypes.STRING,
|
145
|
+
field: "masspay_user_token",
|
146
|
+
},
|
147
|
+
stytchUserId: {
|
148
|
+
type: sequelize_1.DataTypes.STRING,
|
149
|
+
field: "stytch_user_id",
|
150
|
+
},
|
151
|
+
optInStatus: {
|
152
|
+
type: sequelize_1.DataTypes.STRING,
|
153
|
+
field: "opt_in_status",
|
154
|
+
defaultValue: "pending",
|
155
|
+
},
|
156
|
+
createdAt: sequelize_1.DataTypes.DATE,
|
157
|
+
updatedAt: sequelize_1.DataTypes.DATE,
|
158
|
+
}, {
|
159
|
+
tableName: "users",
|
160
|
+
sequelize: pb_sequelize_1.default,
|
161
|
+
defaultScope: {
|
162
|
+
attributes: { exclude: ["password"] },
|
163
|
+
},
|
164
|
+
});
|
165
|
+
/*
|
166
|
+
====================================================================
|
167
|
+
Class functions
|
168
|
+
====================================================================
|
169
|
+
*/
|
170
|
+
User.getByPhone = async (phoneNumber) => {
|
171
|
+
return await User.findOne({
|
172
|
+
where: {
|
173
|
+
phoneNumber,
|
174
|
+
},
|
175
|
+
});
|
176
|
+
};
|
177
|
+
User.getByEmail = async (email) => {
|
178
|
+
return await User.findOne({
|
179
|
+
where: {
|
180
|
+
email,
|
181
|
+
},
|
182
|
+
});
|
183
|
+
};
|
184
|
+
User.getById = async (userId) => {
|
185
|
+
return await User.findOne({
|
186
|
+
where: {
|
187
|
+
id: userId,
|
188
|
+
},
|
189
|
+
});
|
190
|
+
};
|
191
|
+
User.getOrCreateByPhone = async (phoneNumber) => {
|
192
|
+
let user = await User.getByPhone(phoneNumber);
|
193
|
+
if (user) {
|
194
|
+
return user;
|
195
|
+
}
|
196
|
+
return await User.create({ phoneNumber });
|
197
|
+
};
|
198
|
+
exports.default = User;
|
199
|
+
//# sourceMappingURL=user.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../typed-model/user.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,wCAAoD;AAIpD,mEAAmE;AACnE,MAAM,IAAK,SAAQ,iBAA2D;CA4C7E;AAED,IAAI,CAAC,IAAI,CACP;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,IAAI;KACb;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,YAAY;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,WAAW;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,UAAU;KAClB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,UAAU;KAClB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAU,CAAC,CAAC;QAClD,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE,kBAAU,CAAC,MAAM;KAChC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC;QAChD,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,gBAAQ,CAAC,IAAI;KAC5B;IACD,GAAG,EAAE;QACH,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE,KAAK;KACb;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,UAAU;KAClB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,YAAY;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,aAAa;KACrB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,YAAY;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,eAAe;KACvB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,aAAa;KACrB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,cAAc;KACtB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,mBAAmB;KAC3B;IACD,cAAc,EAAE;QACd,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,kBAAkB;KAC1B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,WAAW;KACnB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,YAAY;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,CAAC;KAChB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,OAAO;QACd,YAAY,EAAE,CAAC;KAChB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,mBAAmB;KAC3B;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,CAAC;KAChB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,gBAAgB;KACxB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE,EAAE;KACjB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,CAAC;KAChB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,oBAAoB;KAC5B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,gBAAgB;KACxB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,SAAS;KACxB;IACD,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAE,OAAO;IAClB,SAAS,EAAT,sBAAS;IACT,YAAY,EAAE;QACZ,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;KACtC;CACF,CACF,CAAC;AAEF;;;;IAII;AAEJ,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;IAC9C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE;YACL,WAAW;SACZ;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IACxC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE;YACL,KAAK;SACN;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACtC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE;YACL,EAAE,EAAE,MAAM;SACX;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAI,CAAC,kBAAkB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;IACtD,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAE9C,IAAI,IAAI,EAAE;QACR,OAAO,IAAI,CAAC;KACb;IAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const sequelize_1 = require("sequelize");
|
7
|
+
const _1 = require(".");
|
8
|
+
const types_1 = require("../src/types");
|
9
|
+
const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
|
10
|
+
// order of InferAttributes & InferCreationAttributes is important.
|
11
|
+
class UsersOnCreators extends sequelize_1.Model {
|
12
|
+
}
|
13
|
+
UsersOnCreators.init({
|
14
|
+
id: {
|
15
|
+
type: sequelize_1.DataTypes.BIGINT,
|
16
|
+
primaryKey: true,
|
17
|
+
allowNull: false,
|
18
|
+
defaultValue: pb_sequelize_1.default.fn("next_id"),
|
19
|
+
},
|
20
|
+
creatorId: {
|
21
|
+
type: sequelize_1.DataTypes.BIGINT,
|
22
|
+
allowNull: false,
|
23
|
+
field: "creator_id",
|
24
|
+
references: {
|
25
|
+
model: _1.User,
|
26
|
+
},
|
27
|
+
},
|
28
|
+
userId: {
|
29
|
+
type: sequelize_1.DataTypes.BIGINT,
|
30
|
+
allowNull: false,
|
31
|
+
field: "user_id",
|
32
|
+
references: {
|
33
|
+
model: _1.User,
|
34
|
+
},
|
35
|
+
},
|
36
|
+
userRole: {
|
37
|
+
type: sequelize_1.DataTypes.ENUM(...Object.values(types_1.UserStoreRole)),
|
38
|
+
field: "user_role",
|
39
|
+
defaultValue: types_1.UserStoreRole.READ_ONLY,
|
40
|
+
},
|
41
|
+
status: {
|
42
|
+
type: sequelize_1.DataTypes.STRING,
|
43
|
+
field: "status",
|
44
|
+
defaultValue: "active",
|
45
|
+
},
|
46
|
+
createdAt: sequelize_1.DataTypes.DATE,
|
47
|
+
updatedAt: sequelize_1.DataTypes.DATE,
|
48
|
+
}, {
|
49
|
+
sequelize: pb_sequelize_1.default,
|
50
|
+
tableName: "users_on_creators",
|
51
|
+
});
|
52
|
+
_1.User.hasMany(UsersOnCreators, {
|
53
|
+
foreignKey: "userId",
|
54
|
+
sourceKey: "id",
|
55
|
+
});
|
56
|
+
UsersOnCreators.hasMany(_1.User, {
|
57
|
+
foreignKey: "id",
|
58
|
+
sourceKey: "userId",
|
59
|
+
onDelete: "NO ACTION",
|
60
|
+
});
|
61
|
+
_1.User.hasMany(UsersOnCreators, {
|
62
|
+
foreignKey: "creatorId",
|
63
|
+
sourceKey: "id",
|
64
|
+
});
|
65
|
+
UsersOnCreators.hasMany(_1.User, {
|
66
|
+
foreignKey: "id",
|
67
|
+
sourceKey: "creatorId",
|
68
|
+
onDelete: "NO ACTION",
|
69
|
+
});
|
70
|
+
exports.default = UsersOnCreators;
|
71
|
+
//# sourceMappingURL=users_on_creators.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"users_on_creators.js","sourceRoot":"","sources":["../../typed-model/users_on_creators.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,wBAAyB;AACzB,wCAA6C;AAE7C,kEAAuC;AAEvC,mEAAmE;AACnE,MAAM,eAAgB,SAAQ,iBAG7B;CAUA;AAED,eAAe,CAAC,IAAI,CAClB;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE;YACV,KAAK,EAAE,OAAI;SACZ;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,OAAI;SACZ;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAa,CAAC,CAAC;QACrD,KAAK,EAAE,WAAW;QAClB,YAAY,EAAE,qBAAa,CAAC,SAAS;KACtC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,QAAQ;KACvB;IACD,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAT,sBAAS;IACT,SAAS,EAAE,mBAAmB;CAC/B,CACF,CAAC;AAEF,OAAI,CAAC,OAAO,CAAC,eAAe,EAAE;IAC5B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,eAAe,CAAC,OAAO,CAAC,OAAI,EAAE;IAC5B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,OAAI,CAAC,OAAO,CAAC,eAAe,EAAE;IAC5B,UAAU,EAAE,WAAW;IACvB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,eAAe,CAAC,OAAO,CAAC,OAAI,EAAE;IAC5B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,kBAAe,eAAe,CAAC"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const sequelize_1 = require("sequelize");
|
7
|
+
const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
|
8
|
+
// order of InferAttributes & InferCreationAttributes is important.
|
9
|
+
class Withdrawal extends sequelize_1.Model {
|
10
|
+
}
|
11
|
+
Withdrawal.init({
|
12
|
+
id: {
|
13
|
+
type: sequelize_1.DataTypes.BIGINT,
|
14
|
+
primaryKey: true,
|
15
|
+
allowNull: false,
|
16
|
+
defaultValue: pb_sequelize_1.default.fn("next_id"),
|
17
|
+
},
|
18
|
+
userId: {
|
19
|
+
type: sequelize_1.DataTypes.BIGINT,
|
20
|
+
field: "user_id",
|
21
|
+
},
|
22
|
+
amountInCents: {
|
23
|
+
type: sequelize_1.DataTypes.INTEGER,
|
24
|
+
field: "amount_in_cents",
|
25
|
+
},
|
26
|
+
createdAt: sequelize_1.DataTypes.DATE,
|
27
|
+
updatedAt: sequelize_1.DataTypes.DATE,
|
28
|
+
}, {
|
29
|
+
tableName: "withdrawals",
|
30
|
+
sequelize: pb_sequelize_1.default,
|
31
|
+
});
|
32
|
+
exports.default = Withdrawal;
|
33
|
+
//# sourceMappingURL=withdrawal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"withdrawal.js","sourceRoot":"","sources":["../../typed-model/withdrawal.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AAEvC,mEAAmE;AACnE,MAAM,UAAW,SAAQ,iBAGxB;CAQA;AAED,UAAU,CAAC,IAAI,CACb;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,SAAS;KACjB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,KAAK,EAAE,iBAAiB;KACzB;IACD,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAE,aAAa;IACxB,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.app = void 0;
|
7
|
+
const express_1 = __importDefault(require("express"));
|
8
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
9
|
+
const body_parser_1 = __importDefault(require("body-parser"));
|
10
|
+
const http_1 = __importDefault(require("http"));
|
11
|
+
const cors_1 = __importDefault(require("cors"));
|
12
|
+
const payment_1 = require("./payment");
|
13
|
+
exports.app = (0, express_1.default)();
|
14
|
+
const server = http_1.default.createServer(exports.app);
|
15
|
+
dotenv_1.default.config();
|
16
|
+
exports.app.options("*", (req, resp, next) => {
|
17
|
+
next();
|
18
|
+
}, (0, cors_1.default)());
|
19
|
+
const corsOptions = {
|
20
|
+
origin: "*",
|
21
|
+
optionSuccessStatus: 200,
|
22
|
+
};
|
23
|
+
exports.app.use((0, cors_1.default)(corsOptions));
|
24
|
+
exports.app.use(body_parser_1.default.json());
|
25
|
+
exports.app.post("/recurly", async (req, res, next) => {
|
26
|
+
const { event_type, object_type, uuid } = req.body;
|
27
|
+
console.log(req.body);
|
28
|
+
if (object_type == "payment") {
|
29
|
+
switch (event_type) {
|
30
|
+
case "refunded":
|
31
|
+
return await (0, payment_1.refund)("uuid-" + uuid, res);
|
32
|
+
default:
|
33
|
+
break;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
res.send("No actions taken on this webhook");
|
37
|
+
});
|
38
|
+
exports.app.use(function errorHandler(err, req, res, next) {
|
39
|
+
console.error(err.message);
|
40
|
+
res.status(500);
|
41
|
+
res.send(err);
|
42
|
+
});
|
43
|
+
let port = process.env.PORT;
|
44
|
+
if (port == null || port == "") {
|
45
|
+
port = "3003";
|
46
|
+
}
|
47
|
+
server.listen(port, () => console.log(`Listening on port ${port}`));
|
48
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../webhooks/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,oDAA4B;AAE5B,8DAAqC;AACrC,gDAAwB;AACxB,gDAAwB;AACxB,uCAAmC;AAEtB,QAAA,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;AAC7B,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,WAAG,CAAC,CAAC;AACtC,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,WAAG,CAAC,OAAO,CACT,GAAG,EACH,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAClB,IAAI,EAAE,CAAC;AACT,CAAC,EACD,IAAA,cAAI,GAAE,CACP,CAAC;AACF,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,GAAG;IACX,mBAAmB,EAAE,GAAG;CACzB,CAAC;AAEF,WAAG,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,WAAW,CAAC,CAAC,CAAC;AAE3B,WAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,WAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC5C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,WAAW,IAAI,SAAS,EAAE;QAC5B,QAAQ,UAAU,EAAE;YAClB,KAAK,UAAU;gBACb,OAAO,MAAM,IAAA,gBAAM,EAAC,OAAO,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3C;gBACE,MAAM;SACT;KACF;IACD,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,WAAG,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;IAC/C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;IAC9B,IAAI,GAAG,MAAM,CAAC;CACf;AAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.refund = void 0;
|
7
|
+
var refund_1 = require("./refund");
|
8
|
+
Object.defineProperty(exports, "refund", { enumerable: true, get: function () { return __importDefault(refund_1).default; } });
|
9
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../webhooks/payment/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6C;AAApC,iHAAA,OAAO,OAAU"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const src_1 = require("../../src");
|
4
|
+
const typed_model_1 = require("../../typed-model");
|
5
|
+
exports.default = async (id, res) => {
|
6
|
+
var _a;
|
7
|
+
let refundTransaction = await src_1.recurlyInstance.getTransaction(id);
|
8
|
+
if (!refundTransaction) {
|
9
|
+
return res.status(400).send("Could not find refund transaction");
|
10
|
+
}
|
11
|
+
if (refundTransaction.type != "refund") {
|
12
|
+
return res.status(400).send("Transaction is not a refund");
|
13
|
+
}
|
14
|
+
let originalTransaction = await src_1.recurlyInstance.getTransaction(refundTransaction.originalTransactionId);
|
15
|
+
let invoiceId = (_a = originalTransaction.invoice) === null || _a === void 0 ? void 0 : _a.id;
|
16
|
+
let transaction = await typed_model_1.Transaction.findOne({
|
17
|
+
where: {
|
18
|
+
recurlyInvoiceId: invoiceId,
|
19
|
+
},
|
20
|
+
});
|
21
|
+
if (!transaction) {
|
22
|
+
return res.status(400).send("No credit payment found");
|
23
|
+
}
|
24
|
+
if (transaction.earningAmountInCents <= 0) {
|
25
|
+
return res.status(400).send("Already refunded this payment");
|
26
|
+
}
|
27
|
+
if (!transaction.withdrawalDate) {
|
28
|
+
transaction.transactionAmountInCents = 0;
|
29
|
+
transaction.earningAmountInCents = 0;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
transaction.transactionAmountInCents = 0;
|
33
|
+
transaction.earningAmountInCents = transaction.earningAmountInCents * -1;
|
34
|
+
transaction.setAttributes("withdrawalDate", undefined);
|
35
|
+
}
|
36
|
+
await transaction.save();
|
37
|
+
return res.send("Success");
|
38
|
+
};
|
39
|
+
//# sourceMappingURL=refund.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../webhooks/payment/refund.ts"],"names":[],"mappings":";;AAAA,mCAA4C;AAC5C,mDAAgD;AAEhD,kBAAe,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;;IAC/B,IAAI,iBAAiB,GAAG,MAAM,qBAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;KAClE;IACD,IAAI,iBAAiB,CAAC,IAAI,IAAI,QAAQ,EAAE;QACtC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;KAC5D;IAED,IAAI,mBAAmB,GAAG,MAAM,qBAAe,CAAC,cAAc,CAC5D,iBAAiB,CAAC,qBAAsB,CACzC,CAAC;IAEF,IAAI,SAAS,GAAG,MAAA,mBAAmB,CAAC,OAAO,0CAAE,EAAG,CAAC;IAEjD,IAAI,WAAW,GAAG,MAAM,yBAAW,CAAC,OAAO,CAAC;QAC1C,KAAK,EAAE;YACL,gBAAgB,EAAE,SAAS;SAC5B;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;KACxD;IAED,IAAI,WAAW,CAAC,oBAAoB,IAAI,CAAC,EAAE;QACzC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;KAC9D;IAED,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;QAC/B,WAAW,CAAC,wBAAwB,GAAG,CAAC,CAAC;QACzC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;KACtC;SAAM;QACL,WAAW,CAAC,wBAAwB,GAAG,CAAC,CAAC;QACzC,WAAW,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QACzE,WAAW,CAAC,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;KACxD;IAED,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAEzB,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC,CAAC"}
|
package/package.json
CHANGED
package/typed-model/index.ts
CHANGED
@@ -22,4 +22,6 @@ export { default as Application } from "./application";
|
|
22
22
|
export { default as Store } from "./store";
|
23
23
|
export { default as UsersOnCreators } from "./users_on_creators";
|
24
24
|
export { default as Integration } from "./integration";
|
25
|
+
export { default as Sport } from "./sport";
|
26
|
+
export { default as SportOnPosts } from "./sport-on-posts";
|
25
27
|
export { default as pbSequelize } from "./pb-sequelize";
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import {
|
2
|
+
Model,
|
3
|
+
InferAttributes,
|
4
|
+
InferCreationAttributes,
|
5
|
+
CreationOptional,
|
6
|
+
DataTypes,
|
7
|
+
} from "sequelize";
|
8
|
+
|
9
|
+
import sequelize from "./pb-sequelize";
|
10
|
+
import Post from "./post";
|
11
|
+
import Sport from "./sport";
|
12
|
+
|
13
|
+
// order of InferAttributes & InferCreationAttributes is important.
|
14
|
+
class SportOnPosts extends Model<
|
15
|
+
InferAttributes<SportOnPosts>,
|
16
|
+
InferCreationAttributes<SportOnPosts>
|
17
|
+
> {
|
18
|
+
// 'CreationOptional' is a special type that marks the field as optional
|
19
|
+
// when creating an instance of the model (such as using Model.create()).
|
20
|
+
declare id: CreationOptional<string>;
|
21
|
+
declare sportId: string;
|
22
|
+
declare postId: string;
|
23
|
+
declare createdAt: CreationOptional<Date>;
|
24
|
+
declare updatedAt: CreationOptional<Date>;
|
25
|
+
}
|
26
|
+
|
27
|
+
SportOnPosts.init(
|
28
|
+
{
|
29
|
+
id: {
|
30
|
+
type: DataTypes.BIGINT,
|
31
|
+
primaryKey: true,
|
32
|
+
allowNull: false,
|
33
|
+
defaultValue: sequelize.fn("next_id"),
|
34
|
+
},
|
35
|
+
sportId: {
|
36
|
+
type: DataTypes.BIGINT,
|
37
|
+
field: "sport_id",
|
38
|
+
allowNull: false,
|
39
|
+
},
|
40
|
+
postId: {
|
41
|
+
type: DataTypes.BIGINT,
|
42
|
+
field: "post_id",
|
43
|
+
allowNull: false,
|
44
|
+
},
|
45
|
+
createdAt: DataTypes.DATE,
|
46
|
+
updatedAt: DataTypes.DATE,
|
47
|
+
},
|
48
|
+
{
|
49
|
+
tableName: "sport_on_posts",
|
50
|
+
sequelize,
|
51
|
+
}
|
52
|
+
);
|
53
|
+
|
54
|
+
SportOnPosts.hasOne(Post, {
|
55
|
+
foreignKey: "id",
|
56
|
+
sourceKey: "postId",
|
57
|
+
onDelete: "NO ACTION",
|
58
|
+
constraints: false,
|
59
|
+
});
|
60
|
+
|
61
|
+
Post.hasMany(SportOnPosts, {
|
62
|
+
foreignKey: "postId",
|
63
|
+
onDelete: "NO ACTION",
|
64
|
+
constraints: false,
|
65
|
+
});
|
66
|
+
|
67
|
+
SportOnPosts.hasOne(Sport, {
|
68
|
+
foreignKey: "id",
|
69
|
+
sourceKey: "sportId",
|
70
|
+
onDelete: "NO ACTION",
|
71
|
+
constraints: false,
|
72
|
+
});
|
73
|
+
|
74
|
+
Sport.hasMany(SportOnPosts, {
|
75
|
+
foreignKey: "sportId",
|
76
|
+
onDelete: "NO ACTION",
|
77
|
+
constraints: false,
|
78
|
+
});
|
79
|
+
|
80
|
+
export default SportOnPosts;
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import {
|
2
|
+
Model,
|
3
|
+
InferAttributes,
|
4
|
+
InferCreationAttributes,
|
5
|
+
CreationOptional,
|
6
|
+
DataTypes,
|
7
|
+
} from "sequelize";
|
8
|
+
|
9
|
+
import sequelize from "./pb-sequelize";
|
10
|
+
|
11
|
+
// order of InferAttributes & InferCreationAttributes is important.
|
12
|
+
class Sport extends Model<
|
13
|
+
InferAttributes<Sport>,
|
14
|
+
InferCreationAttributes<Sport>
|
15
|
+
> {
|
16
|
+
// 'CreationOptional' is a special type that marks the field as optional
|
17
|
+
// when creating an instance of the model (such as using Model.create()).
|
18
|
+
declare id: CreationOptional<string>;
|
19
|
+
declare sportName: string;
|
20
|
+
declare createdAt: CreationOptional<Date>;
|
21
|
+
declare updatedAt: CreationOptional<Date>;
|
22
|
+
}
|
23
|
+
|
24
|
+
Sport.init(
|
25
|
+
{
|
26
|
+
id: {
|
27
|
+
type: DataTypes.BIGINT,
|
28
|
+
primaryKey: true,
|
29
|
+
allowNull: false,
|
30
|
+
defaultValue: sequelize.fn("next_id"),
|
31
|
+
},
|
32
|
+
sportName: {
|
33
|
+
type: DataTypes.STRING,
|
34
|
+
field: "sport_name",
|
35
|
+
},
|
36
|
+
createdAt: DataTypes.DATE,
|
37
|
+
updatedAt: DataTypes.DATE,
|
38
|
+
},
|
39
|
+
{
|
40
|
+
// Other model options go here
|
41
|
+
tableName: "sports",
|
42
|
+
sequelize,
|
43
|
+
}
|
44
|
+
);
|
45
|
+
|
46
|
+
export default Sport;
|