@winible/winible-typed 2.0.1 → 2.1.1

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.
Files changed (63) hide show
  1. package/dist/migrations/20230412190423-migrate_purchased_contents.js +10 -0
  2. package/dist/migrations/20230412190423-migrate_purchased_contents.js.map +1 -0
  3. package/dist/migrations/20230412202031-migrate_other_fields.js +27 -0
  4. package/dist/migrations/20230412202031-migrate_other_fields.js.map +1 -0
  5. package/dist/migrations/20230412213952-deprecate_phone_users_and_phone_owners.js +27 -0
  6. package/dist/migrations/20230412213952-deprecate_phone_users_and_phone_owners.js.map +1 -0
  7. package/dist/scripts/deleteMalformedImages.js +2 -2
  8. package/dist/scripts/deleteMalformedImages.js.map +1 -1
  9. package/dist/typed-model/content-like.js +27 -15
  10. package/dist/typed-model/content-like.js.map +1 -1
  11. package/dist/typed-model/credit-payment.js +35 -371
  12. package/dist/typed-model/credit-payment.js.map +1 -1
  13. package/dist/typed-model/index.js +13 -15
  14. package/dist/typed-model/index.js.map +1 -1
  15. package/dist/typed-model/league-user.js +3 -3
  16. package/dist/typed-model/league-user.js.map +1 -1
  17. package/dist/typed-model/media.js +2 -6
  18. package/dist/typed-model/media.js.map +1 -1
  19. package/dist/typed-model/pb-sequelize.js +3 -1
  20. package/dist/typed-model/pb-sequelize.js.map +1 -1
  21. package/dist/typed-model/phone-owner.js +3 -3
  22. package/dist/typed-model/phone-owner.js.map +1 -1
  23. package/dist/typed-model/post.js +114 -0
  24. package/dist/typed-model/post.js.map +1 -0
  25. package/dist/typed-model/posts-on-users.js +92 -0
  26. package/dist/typed-model/posts-on-users.js.map +1 -0
  27. package/dist/typed-model/premium-content.js +9 -4
  28. package/dist/typed-model/premium-content.js.map +1 -1
  29. package/dist/typed-model/purchased-content.js +13 -13
  30. package/dist/typed-model/purchased-content.js.map +1 -1
  31. package/dist/typed-model/recurly-account.js.map +1 -1
  32. package/dist/typed-model/subscription-plan-on-post.js +55 -0
  33. package/dist/typed-model/subscription-plan-on-post.js.map +1 -0
  34. package/dist/typed-model/subscription-plan-on-users.js +111 -0
  35. package/dist/typed-model/subscription-plan-on-users.js.map +1 -0
  36. package/dist/typed-model/subscription-plan.js +14 -35
  37. package/dist/typed-model/subscription-plan.js.map +1 -1
  38. package/dist/typed-model/subscription.js +32 -40
  39. package/dist/typed-model/subscription.js.map +1 -1
  40. package/dist/typed-model/transaction.js +108 -0
  41. package/dist/typed-model/transaction.js.map +1 -0
  42. package/dist/typed-model/withdrawal.js +33 -0
  43. package/dist/typed-model/withdrawal.js.map +1 -0
  44. package/dist/webhooks/index.js.map +1 -1
  45. package/dist/webhooks/payment/refund.js +11 -11
  46. package/dist/webhooks/payment/refund.js.map +1 -1
  47. package/package.json +1 -1
  48. package/typed-model/content-like.ts +33 -17
  49. package/typed-model/index.ts +6 -7
  50. package/typed-model/league-user.ts +5 -3
  51. package/typed-model/media.ts +3 -9
  52. package/typed-model/pb-sequelize.ts +5 -1
  53. package/typed-model/{premium-content.ts → post.ts} +39 -50
  54. package/typed-model/{purchased-content.ts → posts-on-users.ts} +46 -25
  55. package/typed-model/recurly-account.ts +0 -1
  56. package/typed-model/subscription-plan-on-post.ts +77 -0
  57. package/typed-model/{subscription.ts → subscription-plan-on-users.ts} +43 -59
  58. package/typed-model/subscription-plan.ts +21 -50
  59. package/typed-model/transaction.ts +154 -0
  60. package/typed-model/{credit-payout.ts → withdrawal.ts} +9 -21
  61. package/typed-model/credit-payment.ts +0 -681
  62. package/typed-model/phone-owner.ts +0 -341
  63. package/typed-model/phone-user.ts +0 -146
@@ -1,341 +0,0 @@
1
- import {
2
- Model,
3
- InferAttributes,
4
- InferCreationAttributes,
5
- CreationOptional,
6
- DataTypes,
7
- fn,
8
- NonAttribute,
9
- } from "sequelize";
10
-
11
- import sequelize from "./pb-sequelize";
12
- import PremiumContent from "./premium-content";
13
- import Notification from "./notification";
14
-
15
- // order of InferAttributes & InferCreationAttributes is important.
16
- class PhoneOwner extends Model<
17
- InferAttributes<PhoneOwner>,
18
- InferCreationAttributes<PhoneOwner>
19
- > {
20
- // 'CreationOptional' is a special type that marks the field as optional
21
- // when creating an instance of the model (such as using Model.create()).
22
- declare id: CreationOptional<string>;
23
- declare phone?: string;
24
- declare name?: string;
25
- declare email?: string;
26
- declare welcomeText?: string;
27
- declare welcomeMediaUrl?: string;
28
- declare videoUrl?: string;
29
- declare twilioPhoneId?: string;
30
- declare defaultChatRateInCents?: number;
31
- declare defaultVideoRateInCents?: number;
32
- declare defaultVideoLengthInSeconds?: number;
33
- declare defaultAudioRateInCents?: number;
34
- declare audioEnabled?: boolean;
35
- declare videoEnabled?: boolean;
36
- declare linePurchasePriceInCents?: number;
37
- declare serviceFeePercentage?: number;
38
- declare isSubscription?: boolean;
39
- declare isAdult?: boolean;
40
- declare chatMessage?: string;
41
- declare chatImageUrl?: string;
42
- declare status?: string;
43
- declare type?: string;
44
- declare referringOwnerId?: string;
45
- declare socialLinks?: string;
46
- declare agencyId?: string;
47
- declare referralPercentage?: number;
48
- declare videoPreviewUrl?: string;
49
- declare bannerImageUrl?: string;
50
- declare verificationImageKey?: string;
51
- declare passbaseId?: string;
52
- declare isApproved?: boolean;
53
- declare isOnline?: boolean;
54
- declare lastOnline?: Date;
55
- declare numPosts?: number;
56
- declare numFollowers?: number;
57
- declare numSubscribers?: number;
58
- declare numLikes?: number;
59
- declare numPhotos?: number;
60
- declare numVideos?: number;
61
- declare deleted?: boolean;
62
- declare subOnlyFeed?: boolean;
63
- declare disableFollowing?: boolean;
64
- declare requireVerifiedSpender: CreationOptional<boolean>;
65
-
66
- static getByPhone: (phone: string) => Promise<PhoneOwner | null>;
67
- static getById: (ownerId: string) => Promise<PhoneOwner | null>;
68
- static getByTwilioPhoneId: (
69
- twilioPhoneId: string
70
- ) => Promise<PhoneOwner | null>;
71
- static getOrCreateByPhone: (phone: string) => Promise<PhoneOwner>;
72
-
73
- declare subscription_plans?: NonAttribute<any[]>;
74
- declare premium_contents?: NonAttribute<any[]>;
75
- }
76
-
77
- PhoneOwner.init(
78
- {
79
- id: {
80
- type: DataTypes.BIGINT,
81
- primaryKey: true,
82
- allowNull: false,
83
- defaultValue: fn("next_id"),
84
- },
85
- phone: {
86
- type: DataTypes.STRING,
87
- field: "phone",
88
- },
89
- email: {
90
- type: DataTypes.STRING,
91
- field: "name",
92
- },
93
- name: {
94
- type: DataTypes.STRING,
95
- field: "name",
96
- },
97
- welcomeText: {
98
- type: DataTypes.STRING(1000),
99
- field: "welcome_text",
100
- },
101
- welcomeMediaUrl: {
102
- type: DataTypes.STRING,
103
- field: "welcome_media_url",
104
- },
105
- videoUrl: {
106
- type: DataTypes.STRING,
107
- field: "video_url",
108
- },
109
- twilioPhoneId: {
110
- type: DataTypes.BIGINT,
111
- field: "twilio_phone_id",
112
- unique: true,
113
- },
114
- defaultChatRateInCents: {
115
- type: DataTypes.INTEGER,
116
- field: "default_chat_rate_in_cents",
117
- defaultValue: 100,
118
- },
119
- defaultVideoRateInCents: {
120
- type: DataTypes.INTEGER,
121
- field: "default_video_rate_in_cents",
122
- defaultValue: 400,
123
- },
124
- defaultVideoLengthInSeconds: {
125
- type: DataTypes.INTEGER,
126
- field: "default_video_length_in_seconds",
127
- defaultValue: 400,
128
- },
129
- defaultAudioRateInCents: {
130
- type: DataTypes.INTEGER,
131
- field: "default_audio_rate_in_cents",
132
- defaultValue: 200,
133
- },
134
- audioEnabled: {
135
- type: DataTypes.BOOLEAN,
136
- field: "audio_enabled",
137
- defaultValue: true,
138
- },
139
- videoEnabled: {
140
- type: DataTypes.BOOLEAN,
141
- field: "video_enabled",
142
- defaultValue: true,
143
- },
144
- linePurchasePriceInCents: {
145
- type: DataTypes.INTEGER,
146
- field: "line_purchase_price_in_cents",
147
- defaultValue: 199,
148
- },
149
- serviceFeePercentage: {
150
- type: DataTypes.FLOAT,
151
- field: "service_fee_percentage",
152
- defaultValue: 0.2,
153
- },
154
- isSubscription: {
155
- type: DataTypes.BOOLEAN,
156
- field: "is_subscription",
157
- defaultValue: true,
158
- },
159
- isAdult: {
160
- type: DataTypes.BOOLEAN,
161
- field: "is_adult",
162
- defaultValue: true,
163
- },
164
- chatMessage: {
165
- type: DataTypes.STRING(500),
166
- field: "chat_message",
167
- },
168
- chatImageUrl: {
169
- type: DataTypes.STRING,
170
- field: "chat_image_url",
171
- },
172
- status: {
173
- type: DataTypes.STRING,
174
- field: "status",
175
- },
176
- type: {
177
- type: DataTypes.STRING,
178
- field: "type",
179
- },
180
- referringOwnerId: {
181
- type: DataTypes.BIGINT,
182
- field: "referring_owner_id",
183
- },
184
- socialLinks: {
185
- type: DataTypes.ARRAY(DataTypes.STRING),
186
- field: "social_links",
187
- },
188
- agencyId: {
189
- type: DataTypes.BIGINT,
190
- field: "agency_id",
191
- },
192
- referralPercentage: {
193
- type: DataTypes.FLOAT,
194
- field: "referral_percentage",
195
- defaultValue: 0.03,
196
- },
197
- videoPreviewUrl: {
198
- type: DataTypes.STRING,
199
- field: "video_preview_url",
200
- },
201
- bannerImageUrl: {
202
- type: DataTypes.STRING,
203
- field: "banner_image_url",
204
- },
205
- verificationImageKey: {
206
- type: DataTypes.STRING,
207
- field: "verification_image_key",
208
- },
209
- passbaseId: {
210
- type: DataTypes.STRING,
211
- field: "passbase_id",
212
- },
213
- isApproved: {
214
- type: DataTypes.BOOLEAN,
215
- field: "is_approved",
216
- defaultValue: false,
217
- },
218
- isOnline: {
219
- type: DataTypes.BOOLEAN,
220
- field: "is_online",
221
- defaultValue: false,
222
- },
223
- lastOnline: {
224
- type: DataTypes.DATE,
225
- field: "last_online",
226
- defaultValue: new Date(),
227
- },
228
- numFollowers: {
229
- type: DataTypes.INTEGER,
230
- field: "num_followers",
231
- defaultValue: 0,
232
- },
233
- numSubscribers: {
234
- type: DataTypes.INTEGER,
235
- field: "num_subscribers",
236
- defaultValue: 0,
237
- },
238
- numLikes: {
239
- type: DataTypes.INTEGER,
240
- field: "num_likes",
241
- defaultValue: 0,
242
- },
243
- numPosts: {
244
- type: DataTypes.INTEGER,
245
- field: "num_posts",
246
- defaultValue: 0,
247
- },
248
- numPhotos: {
249
- type: DataTypes.INTEGER,
250
- field: "num_photos",
251
- defaultValue: 0,
252
- },
253
- numVideos: {
254
- type: DataTypes.INTEGER,
255
- field: "num_videos",
256
- defaultValue: 0,
257
- },
258
- deleted: {
259
- type: DataTypes.BOOLEAN,
260
- field: "deleted",
261
- defaultValue: false,
262
- },
263
- subOnlyFeed: {
264
- type: DataTypes.BOOLEAN,
265
- field: "sub_only_feed",
266
- defaultValue: false,
267
- },
268
- disableFollowing: {
269
- type: DataTypes.BOOLEAN,
270
- field: "disable_following",
271
- defaultValue: false,
272
- },
273
- requireVerifiedSpender: {
274
- type: DataTypes.BOOLEAN,
275
- field: "require_verified_spender",
276
- defaultValue: false,
277
- },
278
- },
279
- {
280
- tableName: "phone_owners",
281
- sequelize,
282
- defaultScope: {
283
- attributes: {
284
- exclude: ["verification_image_key", "passbase_id", "is_approved"],
285
- },
286
- },
287
- }
288
- );
289
-
290
- /*
291
- ====================================================================
292
- Class functions
293
- ====================================================================
294
- */
295
-
296
- PhoneOwner.getByPhone = async (phone: string) => {
297
- return await PhoneOwner.findOne({
298
- where: {
299
- phone,
300
- },
301
- });
302
- };
303
-
304
- PhoneOwner.getById = async (ownerId: string) => {
305
- return await PhoneOwner.findOne({
306
- where: {
307
- id: ownerId,
308
- },
309
- });
310
- };
311
-
312
- PhoneOwner.getByTwilioPhoneId = async (twilioPhoneId: string) => {
313
- return await PhoneOwner.findOne({
314
- where: {
315
- twilioPhoneId,
316
- },
317
- });
318
- };
319
-
320
- PhoneOwner.getOrCreateByPhone = async (phone: string) => {
321
- let owner = await PhoneOwner.getByPhone(phone);
322
- if (!owner) {
323
- owner = await PhoneOwner.create({ phone });
324
- }
325
- return owner;
326
- };
327
-
328
- PhoneOwner.hasMany(PremiumContent, {
329
- foreignKey: "owner_id",
330
- });
331
-
332
- PremiumContent.belongsTo(PhoneOwner, {
333
- foreignKey: "owner_id",
334
- onDelete: "NO ACTION",
335
- constraints: false,
336
- });
337
-
338
- PhoneOwner.hasMany(Notification, { foreignKey: "owner_id" });
339
- Notification.hasOne(PhoneOwner, { foreignKey: "id", sourceKey: "owner_id" });
340
-
341
- export default PhoneOwner;
@@ -1,146 +0,0 @@
1
- import {
2
- Model,
3
- InferAttributes,
4
- InferCreationAttributes,
5
- CreationOptional,
6
- DataTypes,
7
- fn,
8
- } from "sequelize";
9
-
10
- import sequelize from "./pb-sequelize";
11
-
12
- // order of InferAttributes & InferCreationAttributes is important.
13
- class PhoneUser extends Model<
14
- InferAttributes<PhoneUser>,
15
- InferCreationAttributes<PhoneUser>
16
- > {
17
- // 'CreationOptional' is a special type that marks the field as optional
18
- // when creating an instance of the model (such as using Model.create()).
19
- declare id: CreationOptional<string>;
20
- declare phone?: string;
21
- declare name?: string;
22
- declare email?: string;
23
- declare password?: string;
24
- declare creditsInCents?: number;
25
- declare lastLoginDate?: Date;
26
- declare referringOwnerId?: string;
27
- declare deleted?: boolean;
28
- declare verifiedSpender: CreationOptional<boolean>;
29
- declare passbaseIdentityKey: CreationOptional<String>;
30
- declare createdAt: CreationOptional<Date>;
31
- declare updatedAt: CreationOptional<Date>;
32
- static getOrCreateByPhone: (phone: string) => Promise<any>;
33
- static getById: (userId: string) => Promise<PhoneUser | null>;
34
- static getByEmail: (email: string) => Promise<PhoneUser | null>;
35
- static getByPhone: (phone: string) => Promise<PhoneUser | null>;
36
- }
37
-
38
- PhoneUser.init(
39
- {
40
- id: {
41
- type: DataTypes.BIGINT,
42
- primaryKey: true,
43
- allowNull: false,
44
- defaultValue: fn("next_id"),
45
- },
46
- phone: {
47
- type: DataTypes.STRING,
48
- allowNull: true,
49
- field: "phone",
50
- unique: true,
51
- },
52
- name: {
53
- type: DataTypes.STRING,
54
- field: "name",
55
- },
56
- email: {
57
- type: DataTypes.STRING,
58
- field: "email",
59
- unique: true,
60
- },
61
- password: {
62
- type: DataTypes.STRING,
63
- field: "password",
64
- },
65
- creditsInCents: {
66
- type: DataTypes.INTEGER,
67
- field: "credits_in_cents",
68
- defaultValue: 0,
69
- },
70
- lastLoginDate: {
71
- type: DataTypes.DATE,
72
- field: "last_login_date",
73
- },
74
- referringOwnerId: {
75
- type: DataTypes.BIGINT,
76
- field: "referring_owner_id",
77
- },
78
- deleted: {
79
- type: DataTypes.BOOLEAN,
80
- field: "deleted",
81
- defaultValue: false,
82
- },
83
- verifiedSpender: {
84
- type: DataTypes.BOOLEAN,
85
- field: "verified_spender",
86
- defaultValue: false,
87
- },
88
- passbaseIdentityKey: {
89
- type: DataTypes.STRING,
90
- field: "passbase_identity_key",
91
- },
92
- createdAt: DataTypes.DATE,
93
- updatedAt: DataTypes.DATE,
94
- },
95
- {
96
- tableName: "phone_users",
97
- sequelize,
98
- defaultScope: {
99
- attributes: { exclude: ["password"] },
100
- },
101
- }
102
- );
103
-
104
- /*
105
- ====================================================================
106
- Class functions
107
- ====================================================================
108
- */
109
-
110
- PhoneUser.getByPhone = async (phone: string) => {
111
- return await PhoneUser.findOne({
112
- where: {
113
- phone,
114
- },
115
- });
116
- };
117
-
118
- PhoneUser.getByEmail = async (email: string) => {
119
- return await PhoneUser.findOne({
120
- where: {
121
- email,
122
- },
123
- });
124
- };
125
-
126
- PhoneUser.getById = async (userId: string) => {
127
- return await PhoneUser.findOne({
128
- where: {
129
- id: userId,
130
- },
131
- });
132
- };
133
-
134
- PhoneUser.getOrCreateByPhone = async (phone: string) => {
135
- let user = await PhoneUser.getByPhone(phone);
136
-
137
- if (user) {
138
- return user;
139
- }
140
-
141
- return await PhoneUser.create({
142
- phone,
143
- });
144
- };
145
-
146
- export default PhoneUser;