@winible/winible-typed 1.0.0

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 (243) hide show
  1. package/README.md +32 -0
  2. package/dist/index.js +20 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/migrations/20220601151258-custom_name_describing_your_migration.js +19 -0
  5. package/dist/migrations/20220601151258-custom_name_describing_your_migration.js.map +1 -0
  6. package/dist/migrations/20220605225655-create-dashboard-user-permissions.js +27 -0
  7. package/dist/migrations/20220605225655-create-dashboard-user-permissions.js.map +1 -0
  8. package/dist/migrations/20220606001300-update-dashboard-user-permissions.js +14 -0
  9. package/dist/migrations/20220606001300-update-dashboard-user-permissions.js.map +1 -0
  10. package/dist/migrations/20220607091109-add-read-date-for-message.js +19 -0
  11. package/dist/migrations/20220607091109-add-read-date-for-message.js.map +1 -0
  12. package/dist/migrations/20220616225456-add-delete-columns.js +21 -0
  13. package/dist/migrations/20220616225456-add-delete-columns.js.map +1 -0
  14. package/dist/migrations/20220709202211-disable-feed.js +24 -0
  15. package/dist/migrations/20220709202211-disable-feed.js.map +1 -0
  16. package/dist/migrations/20220723215213-limit-promotion-claims.js +18 -0
  17. package/dist/migrations/20220723215213-limit-promotion-claims.js.map +1 -0
  18. package/dist/migrations/20220723220233-num_claims.js +12 -0
  19. package/dist/migrations/20220723220233-num_claims.js.map +1 -0
  20. package/dist/migrations/20220723221907-default_false_promos.js +17 -0
  21. package/dist/migrations/20220723221907-default_false_promos.js.map +1 -0
  22. package/dist/migrations/20220724172559-default_zero_claims.js +13 -0
  23. package/dist/migrations/20220724172559-default_zero_claims.js.map +1 -0
  24. package/dist/migrations/20220724201419-pinned_post.js +13 -0
  25. package/dist/migrations/20220724201419-pinned_post.js.map +1 -0
  26. package/dist/migrations/20220729164625-unsend_mass.js +12 -0
  27. package/dist/migrations/20220729164625-unsend_mass.js.map +1 -0
  28. package/dist/migrations/20220823033002-interval-unit.js +14 -0
  29. package/dist/migrations/20220823033002-interval-unit.js.map +1 -0
  30. package/dist/migrations/20220830193530-processorId.js +15 -0
  31. package/dist/migrations/20220830193530-processorId.js.map +1 -0
  32. package/dist/migrations/20220907121932-add-processor-to-sub.js +15 -0
  33. package/dist/migrations/20220907121932-add-processor-to-sub.js.map +1 -0
  34. package/dist/migrations/20220907212232-add-trans-id.js +12 -0
  35. package/dist/migrations/20220907212232-add-trans-id.js.map +1 -0
  36. package/dist/migrations/20220907220423-big-int-trans.js +12 -0
  37. package/dist/migrations/20220907220423-big-int-trans.js.map +1 -0
  38. package/dist/migrations/20220909161902-add-stale.js +13 -0
  39. package/dist/migrations/20220909161902-add-stale.js.map +1 -0
  40. package/dist/migrations/20220922000225-verified-spender.js +13 -0
  41. package/dist/migrations/20220922000225-verified-spender.js.map +1 -0
  42. package/dist/migrations/20220922212108-verified-spender-2.js +16 -0
  43. package/dist/migrations/20220922212108-verified-spender-2.js.map +1 -0
  44. package/dist/migrations/20221013223648-product-subscription-list.js +12 -0
  45. package/dist/migrations/20221013223648-product-subscription-list.js.map +1 -0
  46. package/dist/migrations/20221014001037-product-subscription-list.js +75 -0
  47. package/dist/migrations/20221014001037-product-subscription-list.js.map +1 -0
  48. package/dist/migrations/20221026055245-update-type.js +15 -0
  49. package/dist/migrations/20221026055245-update-type.js.map +1 -0
  50. package/dist/scripts/authorizeTransfer.js +188 -0
  51. package/dist/scripts/authorizeTransfer.js.map +1 -0
  52. package/dist/scripts/createDashboardLink.js +30 -0
  53. package/dist/scripts/createDashboardLink.js.map +1 -0
  54. package/dist/scripts/deleteMalformedImages.js +84 -0
  55. package/dist/scripts/deleteMalformedImages.js.map +1 -0
  56. package/dist/scripts/importMixpanelEvents.js +44 -0
  57. package/dist/scripts/importMixpanelEvents.js.map +1 -0
  58. package/dist/scripts/payoutSubscriptions.js +185 -0
  59. package/dist/scripts/payoutSubscriptions.js.map +1 -0
  60. package/dist/scripts/removeUnreferenceSubs.js +39 -0
  61. package/dist/scripts/removeUnreferenceSubs.js.map +1 -0
  62. package/dist/scripts/test.js +33 -0
  63. package/dist/scripts/test.js.map +1 -0
  64. package/dist/server/index.js +30 -0
  65. package/dist/server/index.js.map +1 -0
  66. package/dist/server/middlewares/slack-auth.js +40 -0
  67. package/dist/server/middlewares/slack-auth.js.map +1 -0
  68. package/dist/server/v1/bypassCreator.js +81 -0
  69. package/dist/server/v1/bypassCreator.js.map +1 -0
  70. package/dist/server/v1/cancelSubscription.js +35 -0
  71. package/dist/server/v1/cancelSubscription.js.map +1 -0
  72. package/dist/server/v1/changeName.js +41 -0
  73. package/dist/server/v1/changeName.js.map +1 -0
  74. package/dist/server/v1/checkAuthSub.js +58 -0
  75. package/dist/server/v1/checkAuthSub.js.map +1 -0
  76. package/dist/server/v1/dashboardLink.js +30 -0
  77. package/dist/server/v1/dashboardLink.js.map +1 -0
  78. package/dist/server/v1/getSuspendedSubs.js +76 -0
  79. package/dist/server/v1/getSuspendedSubs.js.map +1 -0
  80. package/dist/server/v1/index.js +28 -0
  81. package/dist/server/v1/index.js.map +1 -0
  82. package/dist/server/v1/manualCreateSub.js +159 -0
  83. package/dist/server/v1/manualCreateSub.js.map +1 -0
  84. package/dist/server/v1/refund.js +78 -0
  85. package/dist/server/v1/refund.js.map +1 -0
  86. package/dist/server/v1/retrySubscription.js +81 -0
  87. package/dist/server/v1/retrySubscription.js.map +1 -0
  88. package/dist/server/v1/searchUser.js +169 -0
  89. package/dist/server/v1/searchUser.js.map +1 -0
  90. package/dist/server/v1/slack.js +14 -0
  91. package/dist/server/v1/slack.js.map +1 -0
  92. package/dist/src/index.js +24 -0
  93. package/dist/src/index.js.map +1 -0
  94. package/dist/src/pk-client.js +1103 -0
  95. package/dist/src/pk-client.js.map +1 -0
  96. package/dist/src/pk-sub.js +310 -0
  97. package/dist/src/pk-sub.js.map +1 -0
  98. package/dist/src/slack-client.js +48 -0
  99. package/dist/src/slack-client.js.map +1 -0
  100. package/dist/src/types.js +3 -0
  101. package/dist/src/types.js.map +1 -0
  102. package/dist/support/index.js +19 -0
  103. package/dist/support/index.js.map +1 -0
  104. package/dist/support/metrics.js +21 -0
  105. package/dist/support/metrics.js.map +1 -0
  106. package/dist/support/mixpanel.js +7 -0
  107. package/dist/support/mixpanel.js.map +1 -0
  108. package/dist/support/slack-client.js +51 -0
  109. package/dist/support/slack-client.js.map +1 -0
  110. package/dist/support/uploadcare.js +140 -0
  111. package/dist/support/uploadcare.js.map +1 -0
  112. package/dist/support/utils.js +69 -0
  113. package/dist/support/utils.js.map +1 -0
  114. package/dist/typed-model/asset-category.js +38 -0
  115. package/dist/typed-model/asset-category.js.map +1 -0
  116. package/dist/typed-model/asset-constent-person.js +56 -0
  117. package/dist/typed-model/asset-constent-person.js.map +1 -0
  118. package/dist/typed-model/blocked-ip.js +34 -0
  119. package/dist/typed-model/blocked-ip.js.map +1 -0
  120. package/dist/typed-model/category-tag.js +46 -0
  121. package/dist/typed-model/category-tag.js.map +1 -0
  122. package/dist/typed-model/consent-person.js +55 -0
  123. package/dist/typed-model/consent-person.js.map +1 -0
  124. package/dist/typed-model/content-category-tag.js +58 -0
  125. package/dist/typed-model/content-category-tag.js.map +1 -0
  126. package/dist/typed-model/content-like.js +58 -0
  127. package/dist/typed-model/content-like.js.map +1 -0
  128. package/dist/typed-model/credit-payment.js +389 -0
  129. package/dist/typed-model/credit-payment.js.map +1 -0
  130. package/dist/typed-model/credit-payout.js +42 -0
  131. package/dist/typed-model/credit-payout.js.map +1 -0
  132. package/dist/typed-model/credit-purchase.js +46 -0
  133. package/dist/typed-model/credit-purchase.js.map +1 -0
  134. package/dist/typed-model/customer-profile.js +51 -0
  135. package/dist/typed-model/customer-profile.js.map +1 -0
  136. package/dist/typed-model/dashboard-user-permissions.js +34 -0
  137. package/dist/typed-model/dashboard-user-permissions.js.map +1 -0
  138. package/dist/typed-model/dashboard-user.js +109 -0
  139. package/dist/typed-model/dashboard-user.js.map +1 -0
  140. package/dist/typed-model/fan-list.js +46 -0
  141. package/dist/typed-model/fan-list.js.map +1 -0
  142. package/dist/typed-model/fraud.js +41 -0
  143. package/dist/typed-model/fraud.js.map +1 -0
  144. package/dist/typed-model/index.js +101 -0
  145. package/dist/typed-model/index.js.map +1 -0
  146. package/dist/typed-model/list-member.js +47 -0
  147. package/dist/typed-model/list-member.js.map +1 -0
  148. package/dist/typed-model/mass-message.js +43 -0
  149. package/dist/typed-model/mass-message.js.map +1 -0
  150. package/dist/typed-model/media-asset.js +73 -0
  151. package/dist/typed-model/media-asset.js.map +1 -0
  152. package/dist/typed-model/media-category.js +49 -0
  153. package/dist/typed-model/media-category.js.map +1 -0
  154. package/dist/typed-model/media.js +59 -0
  155. package/dist/typed-model/media.js.map +1 -0
  156. package/dist/typed-model/message-media.js +53 -0
  157. package/dist/typed-model/message-media.js.map +1 -0
  158. package/dist/typed-model/message.js +191 -0
  159. package/dist/typed-model/message.js.map +1 -0
  160. package/dist/typed-model/notification.js +84 -0
  161. package/dist/typed-model/notification.js.map +1 -0
  162. package/dist/typed-model/pb-sequelize.js +25 -0
  163. package/dist/typed-model/pb-sequelize.js.map +1 -0
  164. package/dist/typed-model/phone-chat-participation.js +127 -0
  165. package/dist/typed-model/phone-chat-participation.js.map +1 -0
  166. package/dist/typed-model/phone-chat.js +118 -0
  167. package/dist/typed-model/phone-chat.js.map +1 -0
  168. package/dist/typed-model/phone-owner.js +266 -0
  169. package/dist/typed-model/phone-owner.js.map +1 -0
  170. package/dist/typed-model/phone-user.js +109 -0
  171. package/dist/typed-model/phone-user.js.map +1 -0
  172. package/dist/typed-model/premium-content.js +123 -0
  173. package/dist/typed-model/premium-content.js.map +1 -0
  174. package/dist/typed-model/purchased-content.js +69 -0
  175. package/dist/typed-model/purchased-content.js.map +1 -0
  176. package/dist/typed-model/short-url.js +88 -0
  177. package/dist/typed-model/short-url.js.map +1 -0
  178. package/dist/typed-model/subscription-bundle.js +53 -0
  179. package/dist/typed-model/subscription-bundle.js.map +1 -0
  180. package/dist/typed-model/subscription-category-tags.js +58 -0
  181. package/dist/typed-model/subscription-category-tags.js.map +1 -0
  182. package/dist/typed-model/subscription-plan.js +126 -0
  183. package/dist/typed-model/subscription-plan.js.map +1 -0
  184. package/dist/typed-model/subscription-promotion.js +93 -0
  185. package/dist/typed-model/subscription-promotion.js.map +1 -0
  186. package/dist/typed-model/subscription.js +123 -0
  187. package/dist/typed-model/subscription.js.map +1 -0
  188. package/dist/typed-model/twilio-phone.js +92 -0
  189. package/dist/typed-model/twilio-phone.js.map +1 -0
  190. package/dist/typed-model/user-follow.js +103 -0
  191. package/dist/typed-model/user-follow.js.map +1 -0
  192. package/dist/typed-model/verification-code.js +52 -0
  193. package/dist/typed-model/verification-code.js.map +1 -0
  194. package/index.ts +3 -0
  195. package/package.json +72 -0
  196. package/src/index.ts +2 -0
  197. package/src/pk-client.ts +1650 -0
  198. package/src/pk-sub.ts +455 -0
  199. package/src/types.ts +40 -0
  200. package/support/index.ts +2 -0
  201. package/support/slack-client.ts +43 -0
  202. package/support/uploadcare.ts +191 -0
  203. package/support/utils.ts +72 -0
  204. package/typed-model/asset-category.ts +57 -0
  205. package/typed-model/asset-constent-person.ts +82 -0
  206. package/typed-model/blocked-ip.ts +52 -0
  207. package/typed-model/category-tag.ts +66 -0
  208. package/typed-model/consent-person.ts +78 -0
  209. package/typed-model/content-category-tag.ts +79 -0
  210. package/typed-model/content-like.ts +79 -0
  211. package/typed-model/credit-payment.ts +678 -0
  212. package/typed-model/credit-payout.ts +62 -0
  213. package/typed-model/credit-purchase.ts +67 -0
  214. package/typed-model/customer-profile.ts +70 -0
  215. package/typed-model/dashboard-user-permissions.ts +51 -0
  216. package/typed-model/dashboard-user.ts +146 -0
  217. package/typed-model/fan-list.ts +68 -0
  218. package/typed-model/fraud.ts +62 -0
  219. package/typed-model/index.ts +58 -0
  220. package/typed-model/list-member.ts +67 -0
  221. package/typed-model/mass-message.ts +64 -0
  222. package/typed-model/media-asset.ts +99 -0
  223. package/typed-model/media-category.ts +70 -0
  224. package/typed-model/media.ts +85 -0
  225. package/typed-model/message-media.ts +74 -0
  226. package/typed-model/message.ts +258 -0
  227. package/typed-model/notification.ts +130 -0
  228. package/typed-model/pb-sequelize.ts +25 -0
  229. package/typed-model/phone-chat-participation.ts +166 -0
  230. package/typed-model/phone-chat.ts +185 -0
  231. package/typed-model/phone-owner.ts +341 -0
  232. package/typed-model/phone-user.ts +146 -0
  233. package/typed-model/premium-content.ts +164 -0
  234. package/typed-model/purchased-content.ts +100 -0
  235. package/typed-model/short-url.ts +120 -0
  236. package/typed-model/subscription-bundle.ts +75 -0
  237. package/typed-model/subscription-category-tags.ts +79 -0
  238. package/typed-model/subscription-plan.ts +171 -0
  239. package/typed-model/subscription-promotion.ts +125 -0
  240. package/typed-model/subscription.ts +170 -0
  241. package/typed-model/twilio-phone.ts +149 -0
  242. package/typed-model/user-follow.ts +141 -0
  243. package/typed-model/verification-code.ts +74 -0
@@ -0,0 +1,191 @@
1
+ import http = require("http");
2
+ import https = require("https");
3
+ import crypto = require("crypto");
4
+
5
+ function setup_response_handler(
6
+ res: http.IncomingMessage,
7
+ callback: (arg0: Error | undefined, arg1?: string | undefined) => void
8
+ ) {
9
+ if (typeof callback !== "function") {
10
+ return;
11
+ }
12
+ var response = "";
13
+ res.setEncoding("utf8");
14
+ res.on("data", function (chunk: string) {
15
+ response += chunk;
16
+ });
17
+ res.on("end", function () {
18
+ var err;
19
+
20
+ if (res.statusCode! > 201) {
21
+ err = new Error(
22
+ "Unexpected status " + res.statusCode + " from uploadcare.com"
23
+ );
24
+ }
25
+
26
+ try {
27
+ response = JSON.parse(response);
28
+ } catch (e) {
29
+ return callback(new Error("Invalid JSON from uploadcare.com"), undefined);
30
+ }
31
+
32
+ callback(err, response);
33
+ });
34
+ }
35
+
36
+ export default function (
37
+ public_key: string,
38
+ private_key: crypto.BinaryLike | crypto.KeyObject,
39
+ options: {}
40
+ ) {
41
+ var defaults = options || {};
42
+
43
+ function _request(
44
+ method: string,
45
+ path: string,
46
+ options: { data?: any; ssl?: any },
47
+ callback: (err: any, res: any) => void
48
+ ) {
49
+ var request_data = JSON.stringify(options.data);
50
+ if (!options.data) {
51
+ request_data = "";
52
+ }
53
+ var ssl = options.ssl !== false;
54
+
55
+ //Prepare headers
56
+ var content_type = "application/json",
57
+ //Hash private key
58
+ content_hash = crypto
59
+ .createHash("md5")
60
+ .update(request_data)
61
+ .digest("hex"),
62
+ date = new Date().toUTCString(),
63
+ sign_string = [method, content_hash, content_type, date, path].join("\n"),
64
+ sign = crypto
65
+ .createHmac("sha1", private_key)
66
+ .update(sign_string)
67
+ .digest("hex"),
68
+ request_options = {
69
+ host: "api.uploadcare.com",
70
+ port: ssl ? 443 : 80,
71
+ path: path,
72
+ method: method,
73
+ headers: {
74
+ Authentication: "UploadCare " + public_key + ":" + sign,
75
+ "X-Uploadcare-Date": date,
76
+ "Content-Type": content_type,
77
+ "Content-Length": request_data.length,
78
+ },
79
+ };
80
+
81
+ var req = ssl
82
+ ? https.request(request_options)
83
+ : http.request(request_options);
84
+
85
+ req.on("response", function (res) {
86
+ setup_response_handler(res, callback);
87
+ });
88
+
89
+ req.write(request_data);
90
+ req.end();
91
+ }
92
+
93
+ function _submit(
94
+ path: any,
95
+ form: {
96
+ submit: (
97
+ arg0: { host: string; port: string; path: any; protocol: string },
98
+ arg1: (err: any, res: any) => void
99
+ ) => void;
100
+ },
101
+ callback: (arg0: any) => void
102
+ ) {
103
+ form.submit(
104
+ {
105
+ host: "upload.uploadcare.com",
106
+ port: "443",
107
+ path: path,
108
+ protocol: "https:",
109
+ },
110
+ function (err: any, res: any) {
111
+ if (err) {
112
+ callback(err);
113
+ } else {
114
+ setup_response_handler(res, callback);
115
+ }
116
+ }
117
+ );
118
+ }
119
+
120
+ function post(
121
+ path: string,
122
+ options: { data?: any; ssl?: boolean; form?: any },
123
+ callback: any
124
+ ) {
125
+ if (options.form) {
126
+ _submit(path, options.data, callback);
127
+ } else {
128
+ _request("POST", path, options, callback);
129
+ }
130
+ }
131
+
132
+ function put(path: string, options: {}, callback: any) {
133
+ _request("PUT", path, options, callback);
134
+ }
135
+
136
+ function get(path: string, callback: any) {
137
+ _request("GET", path, {}, callback);
138
+ }
139
+
140
+ //
141
+ // this is a special case when uploading image from URL
142
+ // you have to check status until you receive a success
143
+ function upload_fromurl_get_status(
144
+ token: string,
145
+ callback: (err: any, file: any) => any
146
+ ) {
147
+ var path = "/from_url/status/?token=" + token + "&_=" + Date.now();
148
+ https.get("https://upload.uploadcare.com" + path, function (res) {
149
+ setup_response_handler(res, callback);
150
+ });
151
+ }
152
+
153
+ function remove(path: string, callback: any) {
154
+ _request("DELETE", path, {}, callback);
155
+ }
156
+
157
+ var api = {
158
+ files: {
159
+ store: function (fileId: string, callback: any) {
160
+ post("/files/" + fileId + "/storage/", {}, callback);
161
+ },
162
+ storeCustom: function (fileId: any, target: any, callback: any) {
163
+ post("/files/", { data: { source: fileId, target: target } }, callback);
164
+ },
165
+ info: function (fileId: string, callback: any) {
166
+ get("/files/" + fileId + "/", callback);
167
+ },
168
+ remove: function (fileId: string, callback: any) {
169
+ remove("/files/" + fileId + "/", callback);
170
+ },
171
+ removeMultiple: function (fileIds: any, callback: any) {
172
+ _request("DELETE", "/files/storage/", { data: fileIds }, callback);
173
+ },
174
+ },
175
+ videos: {
176
+ convert: function (fileId: string, callback: any) {
177
+ post(
178
+ "/convert/video/",
179
+ {
180
+ data: {
181
+ store: 1,
182
+ paths: [`${fileId}/video/-/format/mp4/`],
183
+ },
184
+ },
185
+ callback
186
+ );
187
+ },
188
+ },
189
+ };
190
+ return api;
191
+ }
@@ -0,0 +1,72 @@
1
+ import dotenv = require("dotenv");
2
+ import UploadCare from "../support/uploadcare";
3
+ dotenv.config();
4
+
5
+ const uploadcare = UploadCare(
6
+ "3d93f73d90b8efffadd7",
7
+ "8fd6cd1136eb7a500164",
8
+ {}
9
+ );
10
+
11
+ export const convertVideoToMp4 = async (url: string) => {
12
+ try {
13
+ let uuid = url.split("https://ucarecdn.com/")[1];
14
+ if (!uuid) {
15
+ console.log("Couldn't parse UUID");
16
+ return url;
17
+ }
18
+ uuid = uuid.split("/")[0];
19
+ let fileInfo: any = await new Promise((resolve, reject) => {
20
+ uploadcare.files.info(uuid, (err: any, res: any) => {
21
+ resolve(res);
22
+ });
23
+ });
24
+
25
+ let { mime_type } = fileInfo;
26
+ if (mime_type !== "video/quicktime") {
27
+ console.log("Not quicktime");
28
+ return url;
29
+ }
30
+ let convertResponse: any = await new Promise((resolve, reject) => {
31
+ uploadcare.videos.convert(uuid, (err: any, res: any) => {
32
+ resolve(res);
33
+ });
34
+ });
35
+ let newUUID =
36
+ convertResponse &&
37
+ convertResponse.result &&
38
+ convertResponse.result[0] &&
39
+ convertResponse.result[0].uuid;
40
+ if (!newUUID) {
41
+ return url;
42
+ }
43
+ return `https://ucarecdn.com/${newUUID}/`;
44
+ } catch (err) {
45
+ console.log(err);
46
+ return url;
47
+ }
48
+ };
49
+
50
+ export const convertImageUrlToImageKit = (url: string, transformation: any) => {
51
+ if (!url || url.length == 0) {
52
+ return "";
53
+ }
54
+ const rootMappings: any = {
55
+ "https://paychat-images.s3.amazonaws.com/":
56
+ "https://ik.imagekit.io/jzv0ymnoihm/paychat-images/",
57
+ "https://paychat-media.s3.amazonaws.com/":
58
+ "https://ik.imagekit.io/jzv0ymnoihm/media/",
59
+ "https://paychat-images.s3.us-west-1.amazonaws.com/":
60
+ "https://ik.imagekit.io/jzv0ymnoihm/paychat-images/",
61
+ "https://paychat-media.s3.us-west-1.amazonaws.com/":
62
+ "https://ik.imagekit.io/jzv0ymnoihm/media/",
63
+ };
64
+ let finalUrl = url;
65
+ for (let key of Object.keys(rootMappings)) {
66
+ finalUrl = finalUrl.replace(key, rootMappings[key]);
67
+ }
68
+ if (transformation) {
69
+ finalUrl = finalUrl + `?tr=${transformation}`;
70
+ }
71
+ return finalUrl;
72
+ };
@@ -0,0 +1,57 @@
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 AssetCategory extends Model<
14
+ InferAttributes<AssetCategory>,
15
+ InferCreationAttributes<AssetCategory>
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 mediaAssetId: string;
21
+ declare mediaCategoryId: string;
22
+ declare createdAt: CreationOptional<Date>;
23
+ declare updatedAt: CreationOptional<Date>;
24
+ }
25
+
26
+ AssetCategory.init(
27
+ {
28
+ id: {
29
+ type: DataTypes.BIGINT,
30
+ primaryKey: true,
31
+ allowNull: false,
32
+ defaultValue: sequelize.fn("next_id"),
33
+ },
34
+ mediaAssetId: {
35
+ type: DataTypes.BIGINT,
36
+ field: "media_asset_id",
37
+ },
38
+ mediaCategoryId: {
39
+ type: DataTypes.BIGINT,
40
+ field: "media_category_id",
41
+ },
42
+ createdAt: DataTypes.DATE,
43
+ updatedAt: DataTypes.DATE,
44
+ },
45
+ {
46
+ tableName: "asset_categories",
47
+ sequelize,
48
+ }
49
+ );
50
+
51
+ /*
52
+ ====================================================================
53
+ Class functions
54
+ ====================================================================
55
+ */
56
+
57
+ export default AssetCategory;
@@ -0,0 +1,82 @@
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
+
13
+ import ConsentPerson from "./consent-person";
14
+ import MediaAsset from "./media-asset";
15
+
16
+ // order of InferAttributes & InferCreationAttributes is important.
17
+ class AssetConsentPerson extends Model<
18
+ InferAttributes<AssetConsentPerson>,
19
+ InferCreationAttributes<AssetConsentPerson>
20
+ > {
21
+ // 'CreationOptional' is a special type that marks the field as optional
22
+ // when creating an instance of the model (such as using Model.create()).
23
+ declare id: CreationOptional<string>;
24
+ declare consentPersonId: string;
25
+ declare mediaAssetId: string;
26
+ declare createdAt: CreationOptional<Date>;
27
+ declare updatedAt: CreationOptional<Date>;
28
+
29
+ declare consent_person?: NonAttribute<ConsentPerson>;
30
+ declare media_asset?: NonAttribute<MediaAsset[]>;
31
+ }
32
+
33
+ AssetConsentPerson.init(
34
+ {
35
+ id: {
36
+ type: DataTypes.BIGINT,
37
+ primaryKey: true,
38
+ allowNull: false,
39
+ defaultValue: fn("next_id"),
40
+ },
41
+ consentPersonId: {
42
+ type: DataTypes.BIGINT,
43
+ field: "consent_person_id",
44
+ },
45
+ mediaAssetId: {
46
+ type: DataTypes.BIGINT,
47
+ field: "media_asset_id",
48
+ },
49
+ createdAt: DataTypes.DATE,
50
+ updatedAt: DataTypes.DATE,
51
+ },
52
+ {
53
+ sequelize,
54
+ tableName: "asset_consent_people",
55
+ }
56
+ );
57
+
58
+ /*
59
+ ====================================================================
60
+ Class functions
61
+ ====================================================================
62
+ */
63
+
64
+ AssetConsentPerson.hasOne(ConsentPerson, {
65
+ foreignKey: "id",
66
+ sourceKey: "consentPersonId",
67
+ });
68
+ ConsentPerson.hasMany(AssetConsentPerson, {
69
+ foreignKey: "consent_person_id",
70
+ sourceKey: "id",
71
+ });
72
+
73
+ AssetConsentPerson.hasOne(MediaAsset, {
74
+ foreignKey: "id",
75
+ sourceKey: "mediaAssetId",
76
+ });
77
+ MediaAsset.hasMany(AssetConsentPerson, {
78
+ foreignKey: "media_asset_id",
79
+ sourceKey: "id",
80
+ });
81
+
82
+ export default AssetConsentPerson;
@@ -0,0 +1,52 @@
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 BlockedIP extends Model<
14
+ InferAttributes<BlockedIP>,
15
+ InferCreationAttributes<BlockedIP>
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 ipAddress: string;
21
+ declare createdAt: CreationOptional<Date>;
22
+ declare updatedAt: CreationOptional<Date>;
23
+ }
24
+
25
+ BlockedIP.init(
26
+ {
27
+ id: {
28
+ type: DataTypes.BIGINT,
29
+ primaryKey: true,
30
+ allowNull: false,
31
+ defaultValue: sequelize.fn("next_id"),
32
+ },
33
+ ipAddress: {
34
+ type: DataTypes.STRING,
35
+ field: "ip_address",
36
+ },
37
+ createdAt: DataTypes.DATE,
38
+ updatedAt: DataTypes.DATE,
39
+ },
40
+ {
41
+ tableName: "blocked_ips",
42
+ sequelize,
43
+ }
44
+ );
45
+
46
+ /*
47
+ ====================================================================
48
+ Class functions
49
+ ====================================================================
50
+ */
51
+
52
+ export default BlockedIP;
@@ -0,0 +1,66 @@
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
+ import PhoneOwner from "./phone-owner";
12
+
13
+ // order of InferAttributes & InferCreationAttributes is important.
14
+ class CategoryTag extends Model<
15
+ InferAttributes<CategoryTag>,
16
+ InferCreationAttributes<CategoryTag>
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 ownerId: string;
22
+ declare name: string;
23
+
24
+ declare createdAt: CreationOptional<Date>;
25
+ declare updatedAt: CreationOptional<Date>;
26
+ }
27
+
28
+ CategoryTag.init(
29
+ {
30
+ id: {
31
+ type: DataTypes.BIGINT,
32
+ primaryKey: true,
33
+ allowNull: false,
34
+ defaultValue: sequelize.fn("next_id"),
35
+ },
36
+ ownerId: {
37
+ type: DataTypes.BIGINT,
38
+ field: "owner_id",
39
+ },
40
+ name: {
41
+ type: DataTypes.STRING,
42
+ field: "name",
43
+ },
44
+ createdAt: DataTypes.DATE,
45
+ updatedAt: DataTypes.DATE,
46
+ },
47
+ {
48
+ sequelize,
49
+ tableName: "category_tags",
50
+ // Other model options go here
51
+ }
52
+ );
53
+
54
+ PhoneOwner.hasMany(CategoryTag, {
55
+ foreignKey: "owner_id",
56
+ onDelete: "NO ACTION",
57
+ constraints: false,
58
+ });
59
+ CategoryTag.hasOne(PhoneOwner, {
60
+ foreignKey: "id",
61
+ sourceKey: "owner_id",
62
+ onDelete: "NO ACTION",
63
+ constraints: false,
64
+ });
65
+
66
+ export default CategoryTag;
@@ -0,0 +1,78 @@
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 ConsentPerson extends Model<
14
+ InferAttributes<ConsentPerson>,
15
+ InferCreationAttributes<ConsentPerson>
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 ownerId: string;
21
+ declare fullName: string;
22
+ declare birthday: Date;
23
+ declare consentFormKey: string;
24
+ declare idImageKey: string;
25
+ declare reviewStatus: "pending" | "approved";
26
+ declare createdAt: CreationOptional<Date>;
27
+ declare updatedAt: CreationOptional<Date>;
28
+ }
29
+
30
+ ConsentPerson.init(
31
+ {
32
+ id: {
33
+ type: DataTypes.BIGINT,
34
+ primaryKey: true,
35
+ allowNull: false,
36
+ defaultValue: fn("next_id"),
37
+ },
38
+ ownerId: {
39
+ type: DataTypes.BIGINT,
40
+ field: "owner_id",
41
+ },
42
+ fullName: {
43
+ type: DataTypes.STRING,
44
+ field: "full_name",
45
+ },
46
+ birthday: {
47
+ type: DataTypes.DATE,
48
+ field: "birthday",
49
+ },
50
+ consentFormKey: {
51
+ type: DataTypes.STRING,
52
+ field: "consent_form_key",
53
+ },
54
+ idImageKey: {
55
+ type: DataTypes.STRING,
56
+ field: "id_image_key",
57
+ },
58
+ reviewStatus: {
59
+ type: DataTypes.STRING,
60
+ field: "review_status",
61
+ defaultValue: "pending",
62
+ },
63
+ createdAt: DataTypes.DATE,
64
+ updatedAt: DataTypes.DATE,
65
+ },
66
+ {
67
+ sequelize,
68
+ tableName: "consent_people",
69
+ }
70
+ );
71
+
72
+ /*
73
+ ====================================================================
74
+ Class functions
75
+ ====================================================================
76
+ */
77
+
78
+ export default ConsentPerson;
@@ -0,0 +1,79 @@
1
+ import {
2
+ Model,
3
+ InferAttributes,
4
+ InferCreationAttributes,
5
+ CreationOptional,
6
+ DataTypes,
7
+ fn,
8
+ } from "sequelize";
9
+ import CategoryTag from "./category-tag";
10
+
11
+ import sequelize from "./pb-sequelize";
12
+ import PremiumContent from "./premium-content";
13
+
14
+ // order of InferAttributes & InferCreationAttributes is important.
15
+ class ContentCategoryTag extends Model<
16
+ InferAttributes<ContentCategoryTag>,
17
+ InferCreationAttributes<ContentCategoryTag>
18
+ > {
19
+ // 'CreationOptional' is a special type that marks the field as optional
20
+ // when creating an instance of the model (such as using Model.create()).
21
+ declare id: CreationOptional<string>;
22
+ declare contentId: string;
23
+ declare tagId: string;
24
+
25
+ declare createdAt: CreationOptional<Date>;
26
+ declare updatedAt: CreationOptional<Date>;
27
+ }
28
+
29
+ ContentCategoryTag.init(
30
+ {
31
+ id: {
32
+ type: DataTypes.BIGINT,
33
+ primaryKey: true,
34
+ allowNull: false,
35
+ defaultValue: sequelize.fn("next_id"),
36
+ },
37
+ contentId: {
38
+ type: DataTypes.BIGINT,
39
+ field: "content_id",
40
+ },
41
+ tagId: {
42
+ type: DataTypes.BIGINT,
43
+ field: "tag_id",
44
+ },
45
+ createdAt: DataTypes.DATE,
46
+ updatedAt: DataTypes.DATE,
47
+ },
48
+ {
49
+ sequelize,
50
+ tableName: "content_category_tags",
51
+ // Other model options go here
52
+ }
53
+ );
54
+
55
+ PremiumContent.hasMany(ContentCategoryTag, {
56
+ foreignKey: "content_id",
57
+ onDelete: "NO ACTION",
58
+ constraints: false,
59
+ });
60
+ ContentCategoryTag.hasOne(PremiumContent, {
61
+ foreignKey: "id",
62
+ sourceKey: "content_id",
63
+ onDelete: "NO ACTION",
64
+ constraints: false,
65
+ });
66
+
67
+ CategoryTag.hasMany(ContentCategoryTag, {
68
+ foreignKey: "tag_id",
69
+ onDelete: "NO ACTION",
70
+ constraints: false,
71
+ });
72
+ ContentCategoryTag.hasOne(CategoryTag, {
73
+ foreignKey: "id",
74
+ sourceKey: "tag_id",
75
+ onDelete: "NO ACTION",
76
+ constraints: false,
77
+ });
78
+
79
+ export default ContentCategoryTag;