@winible/winible-typed 2.92.2 → 2.92.3
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/event-collector-models/config/config.js +29 -0
- package/dist/event-collector-models/config/config.js.map +1 -0
- package/dist/migration_numerical_id_to_external_id.js +59 -0
- package/dist/migration_numerical_id_to_external_id.js.map +1 -0
- package/dist/migrations/20241123184623-recurly-payment-monitoring-whitelist.js +33 -0
- package/dist/migrations/20241123184623-recurly-payment-monitoring-whitelist.js.map +1 -0
- package/dist/typed-model/bet.js +0 -5
- package/dist/typed-model/bet.js.map +1 -1
- package/dist/typed-model/index.js +2 -4
- package/dist/typed-model/index.js.map +1 -1
- package/dist/typed-model/{featured-capper.js → recurly-payment-monitoring-whitelist.js} +16 -22
- package/dist/typed-model/recurly-payment-monitoring-whitelist.js.map +1 -0
- package/event-collector-models/config/config.ts +29 -0
- package/package.json +1 -1
- package/typed-model/banner-creative.ts +1 -1
- package/dist/migrations/20251002044115-create-users-on-bets.js +0 -74
- package/dist/migrations/20251002044115-create-users-on-bets.js.map +0 -1
- package/dist/typed-model/featured-capper.js.map +0 -1
- package/dist/typed-model/users-on-bets.js +0 -98
- package/dist/typed-model/users-on-bets.js.map +0 -1
- package/dist/utils/lambdaUtils/logger.js +0 -90
- package/dist/utils/lambdaUtils/logger.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require("dotenv").config();
|
|
2
|
+
module.exports = {
|
|
3
|
+
development: {
|
|
4
|
+
dialect: "postgres",
|
|
5
|
+
host: process.env.TS_DB_HOST,
|
|
6
|
+
port: process.env.TS_DB_PORT,
|
|
7
|
+
database: process.env.TS_DB_NAME,
|
|
8
|
+
username: process.env.TS_DB_USER,
|
|
9
|
+
password: process.env.TS_DB_PASSWORD,
|
|
10
|
+
dialectOptions: {
|
|
11
|
+
ssl: false,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
production: {
|
|
15
|
+
dialect: "postgres",
|
|
16
|
+
host: process.env.TS_DB_HOST,
|
|
17
|
+
port: process.env.TS_DB_PORT,
|
|
18
|
+
database: process.env.TS_DB_NAME,
|
|
19
|
+
username: process.env.TS_DB_USER,
|
|
20
|
+
password: process.env.TS_DB_PASSWORD,
|
|
21
|
+
dialectOptions: {
|
|
22
|
+
ssl: {
|
|
23
|
+
require: true,
|
|
24
|
+
rejectUnauthorized: false,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../event-collector-models/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAE3B,MAAM,CAAC,OAAO,GAAG;IACf,WAAW,EAAE;QACX,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC5B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAChC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAChC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACpC,cAAc,EAAE;YACd,GAAG,EAAE,KAAK;SACX;KACF;IACD,UAAU,EAAE;QACV,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC5B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAChC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAChC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACpC,cAAc,EAAE;YACd,GAAG,EAAE;gBACH,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,KAAK;aAC1B;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sequelize_1 = require("sequelize");
|
|
4
|
+
/**
|
|
5
|
+
* Migration para alterar numerical_id para external_id
|
|
6
|
+
* Alterando o tipo de INTEGER para STRING e renomeando a coluna
|
|
7
|
+
*/
|
|
8
|
+
module.exports = {
|
|
9
|
+
async up(queryInterface) {
|
|
10
|
+
// 1. Alterar tipo de numerical_id para VARCHAR nas tabelas
|
|
11
|
+
await queryInterface.changeColumn("bet_sports", "numerical_id", {
|
|
12
|
+
type: sequelize_1.DataTypes.STRING,
|
|
13
|
+
allowNull: false,
|
|
14
|
+
});
|
|
15
|
+
await queryInterface.changeColumn("leagues", "numerical_id", {
|
|
16
|
+
type: sequelize_1.DataTypes.STRING,
|
|
17
|
+
allowNull: false,
|
|
18
|
+
});
|
|
19
|
+
await queryInterface.changeColumn("markets", "numerical_id", {
|
|
20
|
+
type: sequelize_1.DataTypes.STRING,
|
|
21
|
+
allowNull: false,
|
|
22
|
+
});
|
|
23
|
+
await queryInterface.changeColumn("sportsbooks", "numerical_id", {
|
|
24
|
+
type: sequelize_1.DataTypes.STRING,
|
|
25
|
+
allowNull: false,
|
|
26
|
+
});
|
|
27
|
+
// 2. Renomear colunas de numerical_id para external_id
|
|
28
|
+
await queryInterface.renameColumn("bet_sports", "numerical_id", "external_id");
|
|
29
|
+
await queryInterface.renameColumn("leagues", "numerical_id", "external_id");
|
|
30
|
+
await queryInterface.renameColumn("markets", "numerical_id", "external_id");
|
|
31
|
+
await queryInterface.renameColumn("sportsbooks", "numerical_id", "external_id");
|
|
32
|
+
},
|
|
33
|
+
async down(queryInterface) {
|
|
34
|
+
// Reverter as alterações
|
|
35
|
+
// 1. Renomear de volta para numerical_id
|
|
36
|
+
await queryInterface.renameColumn("bet_sports", "external_id", "numerical_id");
|
|
37
|
+
await queryInterface.renameColumn("leagues", "external_id", "numerical_id");
|
|
38
|
+
await queryInterface.renameColumn("markets", "external_id", "numerical_id");
|
|
39
|
+
await queryInterface.renameColumn("sportsbooks", "external_id", "numerical_id");
|
|
40
|
+
// 2. Alterar tipo de volta para INTEGER
|
|
41
|
+
await queryInterface.changeColumn("bet_sports", "numerical_id", {
|
|
42
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
43
|
+
allowNull: false,
|
|
44
|
+
});
|
|
45
|
+
await queryInterface.changeColumn("leagues", "numerical_id", {
|
|
46
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
47
|
+
allowNull: false,
|
|
48
|
+
});
|
|
49
|
+
await queryInterface.changeColumn("markets", "numerical_id", {
|
|
50
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
51
|
+
allowNull: false,
|
|
52
|
+
});
|
|
53
|
+
await queryInterface.changeColumn("sportsbooks", "numerical_id", {
|
|
54
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
55
|
+
allowNull: false,
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=migration_numerical_id_to_external_id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration_numerical_id_to_external_id.js","sourceRoot":"","sources":["../migration_numerical_id_to_external_id.ts"],"names":[],"mappings":";;AAAA,yCAAsD;AAEtD;;;GAGG;AAEH,MAAM,CAAC,OAAO,GAAG;IACf,KAAK,CAAC,EAAE,CAAC,cAA8B;QACrC,2DAA2D;QAC3D,MAAM,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,qBAAS,CAAC,MAAM;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;YAC3D,IAAI,EAAE,qBAAS,CAAC,MAAM;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;YAC3D,IAAI,EAAE,qBAAS,CAAC,MAAM;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,EAAE;YAC/D,IAAI,EAAE,qBAAS,CAAC,MAAM;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,uDAAuD;QACvD,MAAM,cAAc,CAAC,YAAY,CAC/B,YAAY,EACZ,cAAc,EACd,aAAa,CACd,CAAC;QACF,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,cAAc,CAAC,YAAY,CAC/B,aAAa,EACb,cAAc,EACd,aAAa,CACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA8B;QACvC,yBAAyB;QAEzB,yCAAyC;QACzC,MAAM,cAAc,CAAC,YAAY,CAC/B,YAAY,EACZ,aAAa,EACb,cAAc,CACf,CAAC;QACF,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,cAAc,CAAC,YAAY,CAC/B,aAAa,EACb,aAAa,EACb,cAAc,CACf,CAAC;QAEF,wCAAwC;QACxC,MAAM,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,qBAAS,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;YAC3D,IAAI,EAAE,qBAAS,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE;YAC3D,IAAI,EAAE,qBAAS,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,EAAE;YAC/D,IAAI,EAAE,qBAAS,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sequelize_1 = require("sequelize");
|
|
4
|
+
exports.default = {
|
|
5
|
+
async up(queryInterface, sequelize) {
|
|
6
|
+
await queryInterface.createTable("recurly_payment_monitoring_whitelist", {
|
|
7
|
+
id: {
|
|
8
|
+
type: sequelize_1.DataTypes.BIGINT,
|
|
9
|
+
primaryKey: true,
|
|
10
|
+
allowNull: false,
|
|
11
|
+
autoIncrement: true,
|
|
12
|
+
},
|
|
13
|
+
user_id: {
|
|
14
|
+
type: sequelize_1.DataTypes.BIGINT,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: "users",
|
|
18
|
+
key: "id",
|
|
19
|
+
},
|
|
20
|
+
onDelete: "CASCADE",
|
|
21
|
+
},
|
|
22
|
+
createdAt: {
|
|
23
|
+
type: sequelize_1.DataTypes.DATE,
|
|
24
|
+
allowNull: false,
|
|
25
|
+
defaultValue: sequelize.literal("NOW()"),
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
async down(queryInterface, sequelize) {
|
|
30
|
+
await queryInterface.dropTable("recurly_payment_monitoring_whitelist");
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=20241123184623-recurly-payment-monitoring-whitelist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20241123184623-recurly-payment-monitoring-whitelist.js","sourceRoot":"","sources":["../../migrations/20241123184623-recurly-payment-monitoring-whitelist.ts"],"names":[],"mappings":";;AAAA,yCAAiE;AAEjE,kBAAe;IACb,KAAK,CAAC,EAAE,CAAC,cAA8B,EAAE,SAAoB;QAC3D,MAAM,cAAc,CAAC,WAAW,CAAC,sCAAsC,EAAE;YACvE,EAAE,EAAE;gBACF,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,IAAI;aACpB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;aACzC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA8B,EAAE,SAAoB;QAC7D,MAAM,cAAc,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACzE,CAAC;CACF,CAAC"}
|
package/dist/typed-model/bet.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bet.js","sourceRoot":"","sources":["../../typed-model/bet.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,wCAAsD;
|
|
1
|
+
{"version":3,"file":"bet.js","sourceRoot":"","sources":["../../typed-model/bet.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,wCAAsD;AAEtD,mEAAmE;AACnE,MAAM,GAAI,SAAQ,iBAAyD;CAY1E;AAED,GAAG,CAAC,IAAI,CACN;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,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;SACZ;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAa,CAAC,CAAC;QACrD,SAAS,EAAE,KAAK;KACjB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,eAAO,CAAC,CAAC;QAC/C,SAAS,EAAE,KAAK;KACjB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,KAAK;KACjB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,cAAc;KACtB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,aAAa;KACrB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,gBAAgB;KACxB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mBAAmB;KAC3B;IACD,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAE,MAAM;IACjB,OAAO,EACL,wEAAwE;IAC1E,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAChB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,GAAG,CAAC,SAAS,CAAC,cAAI,EAAE;IAClB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,kBAAe,GAAG,CAAC"}
|
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.pbSequelize = exports.BannerCreative = exports.SportsbookOnMarket = exports.Dispute = exports.DefaultCompliancePolicy = exports.ParlaysOnBets = exports.OddsOnParlays = exports.OddsOnBets = exports.ComplianceRuleSportsbook = exports.Parlay = exports.Odd = exports.AffiliateLink = exports.MarketOnLeague = exports.League = exports.ComplianceRule = exports.Sportsbook = exports.Market = exports.BetSport = exports.SendgridDomain = exports.SendgridIpPool = exports.SendgridEmailSubAccount = exports.PhoneNumberAssignment = exports.MarketingPhoneNumber = exports.Segment = exports.Trigger = exports.CampaignMessage = exports.Campaign = exports.CampaignTemplate = exports.CreatorServiceFee = exports.UserCookiePreference = exports.CouponRedemptions = exports.UserTransactionLocation = exports.UserReview = exports.PumpingRiskScoreMonitoring = exports.UsersOnPermissions = exports.Permission = exports.SMSCustomMessage =
|
|
6
|
+
exports.MigrationToken = exports.Bet = exports.LimitedOffer = exports.AffiliateLinkType = exports.AffiliateCode = exports.CancellationReason = exports.CancellationOffer = exports.PrivateFeedUsers = exports.FeaturedCreator = exports.PostsOnIntegrations = exports.DiscordIntegrationLog = exports.TelegramIntegrationInviteLink = exports.TelegramIntegrationCode = exports.TelegramIntegrationLog = exports.SubscriberTelegramIntegration = exports.TelegramIntegration = exports.StoresOnOrganizations = exports.UsersOnOrganizations = exports.Organization = exports.FailedTransactions = exports.Whitelist = exports.SubscriberDiscordIntegration = exports.DiscordIntegration = exports.SportOnPosts = exports.Sport = exports.Integration = exports.UsersOnCreators = exports.Store = exports.Application = exports.NewNotificationPreference = exports.NotificationPreference = exports.SubscribersOnCreators = exports.SubscriptionPricingOptionOnCoupons = exports.User = exports.Withdrawal = exports.RecurlyAccount = exports.FreeSubscriptionPlan = exports.SubscriptionPricingOption = exports.SubscriptionCoupon = exports.SubscriptionPlanOnPost = exports.SubscriptionPlanOnUsers = exports.SubscriptionPlan = exports.PostsOnUsers = exports.Post = exports.PasswordTokens = exports.Notification = exports.Media = exports.MediaAsset = exports.Transaction = exports.ContentLike = void 0;
|
|
7
|
+
exports.pbSequelize = exports.BannerCreative = exports.SportsbookOnMarket = exports.Dispute = exports.DefaultCompliancePolicy = exports.ParlaysOnBets = exports.OddsOnParlays = exports.OddsOnBets = exports.ComplianceRuleSportsbook = exports.Parlay = exports.Odd = exports.AffiliateLink = exports.MarketOnLeague = exports.League = exports.ComplianceRule = exports.Sportsbook = exports.Market = exports.BetSport = exports.SendgridDomain = exports.SendgridIpPool = exports.SendgridEmailSubAccount = exports.PhoneNumberAssignment = exports.MarketingPhoneNumber = exports.Segment = exports.Trigger = exports.CampaignMessage = exports.Campaign = exports.CampaignTemplate = exports.CreatorServiceFee = exports.UserCookiePreference = exports.CouponRedemptions = exports.UserTransactionLocation = exports.UserReview = exports.PumpingRiskScoreMonitoring = exports.UsersOnPermissions = exports.Permission = exports.SMSCustomMessage = void 0;
|
|
8
8
|
var content_like_1 = require("./content-like");
|
|
9
9
|
Object.defineProperty(exports, "ContentLike", { enumerable: true, get: function () { return __importDefault(content_like_1).default; } });
|
|
10
10
|
var transaction_1 = require("./transaction");
|
|
@@ -103,8 +103,6 @@ var limited_offer_1 = require("./limited-offer");
|
|
|
103
103
|
Object.defineProperty(exports, "LimitedOffer", { enumerable: true, get: function () { return __importDefault(limited_offer_1).default; } });
|
|
104
104
|
var bet_1 = require("./bet");
|
|
105
105
|
Object.defineProperty(exports, "Bet", { enumerable: true, get: function () { return __importDefault(bet_1).default; } });
|
|
106
|
-
var users_on_bets_1 = require("./users-on-bets");
|
|
107
|
-
Object.defineProperty(exports, "UsersOnBets", { enumerable: true, get: function () { return __importDefault(users_on_bets_1).default; } });
|
|
108
106
|
var migration_token_1 = require("./migration-token");
|
|
109
107
|
Object.defineProperty(exports, "MigrationToken", { enumerable: true, get: function () { return __importDefault(migration_token_1).default; } });
|
|
110
108
|
var sms_custom_message_1 = require("./sms-custom-message");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../typed-model/index.ts"],"names":[],"mappings":";;;;;;;AAAA,+CAAwD;AAA/C,4HAAA,OAAO,OAAe;AAC/B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,6CAAsD;AAA7C,0HAAA,OAAO,OAAc;AAC9B,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,qDAA8D;AAArD,kIAAA,OAAO,OAAkB;AAClC,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,mDAA2D;AAAlD,+HAAA,OAAO,OAAgB;AAChC,yDAAkE;AAAzD,sIAAA,OAAO,OAAoB;AACpC,2EAAkF;AAAzE,sJAAA,OAAO,OAA2B;AAC3C,yEAAgF;AAAvE,oJAAA,OAAO,OAA0B;AAC1C,6DAAsE;AAA7D,0IAAA,OAAO,OAAsB;AACtC,6EAAqF;AAA5E,yJAAA,OAAO,OAA6B;AAC7C,mEAA2E;AAAlE,+IAAA,OAAO,OAAwB;AACxC,qDAA8D;AAArD,kIAAA,OAAO,OAAkB;AAClC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,mGAAyG;AAAhG,6KAAA,OAAO,OAAsC;AACtD,qEAA6E;AAApE,iJAAA,OAAO,OAAyB;AACzC,qEAA8E;AAArE,kJAAA,OAAO,OAA0B;AAC1C,6EAAqF;AAA5E,yJAAA,OAAO,OAA6B;AAC7C,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,yDAAiE;AAAxD,qIAAA,OAAO,OAAmB;AACnC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,mDAA2D;AAAlD,+HAAA,OAAO,OAAgB;AAChC,6DAAsE;AAA7D,0IAAA,OAAO,OAAsB;AACtC,mFAA2F;AAAlF,+JAAA,OAAO,OAAgC;AAChD,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,6DAAsE;AAA7D,0IAAA,OAAO,OAAsB;AACtC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,mEAA2E;AAAlE,+IAAA,OAAO,OAAwB;AACxC,qEAA6E;AAApE,iJAAA,OAAO,OAAyB;AACzC,+DAAwE;AAA/D,4IAAA,OAAO,OAAuB;AACvC,qFAA6F;AAApF,iKAAA,OAAO,OAAiC;AACjD,uEAA+E;AAAtE,mJAAA,OAAO,OAA0B;AAC1C,yEAAiF;AAAxE,qJAAA,OAAO,OAA2B;AAC3C,uFAA8F;AAArF,kKAAA,OAAO,OAAiC;AACjD,qEAA6E;AAApE,iJAAA,OAAO,OAAyB;AACzC,+DAAwE;AAA/D,4IAAA,OAAO,OAAuB;AACvC,uDAAgE;AAAvD,oIAAA,OAAO,OAAmB;AACnC,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,2DAAoE;AAA3D,wIAAA,OAAO,OAAqB;AACrC,6DAAsE;AAA7D,0IAAA,OAAO,OAAsB;AACtC,mDAA4D;AAAnD,gIAAA,OAAO,OAAiB;AACjC,iEAAuE;AAA9D,2IAAA,OAAO,OAAqB;AACrC,iDAA0D;AAAjD,8HAAA,OAAO,OAAgB;AAChC,6BAAuC;AAA9B,2GAAA,OAAO,OAAO;AACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../typed-model/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,17 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const sequelize_1 = require("sequelize");
|
|
7
|
-
const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
|
|
8
7
|
const user_1 = __importDefault(require("./user"));
|
|
9
|
-
|
|
10
|
-
class
|
|
8
|
+
const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
|
|
9
|
+
class RecurlyPaymentMonitoringWhitelist extends sequelize_1.Model {
|
|
11
10
|
}
|
|
12
|
-
|
|
11
|
+
RecurlyPaymentMonitoringWhitelist.init({
|
|
13
12
|
id: {
|
|
14
13
|
type: sequelize_1.DataTypes.BIGINT,
|
|
15
14
|
primaryKey: true,
|
|
16
15
|
allowNull: false,
|
|
17
|
-
|
|
16
|
+
autoIncrement: true,
|
|
18
17
|
},
|
|
19
18
|
userId: {
|
|
20
19
|
type: sequelize_1.DataTypes.BIGINT,
|
|
@@ -22,30 +21,25 @@ FeaturedCapper.init({
|
|
|
22
21
|
field: "user_id",
|
|
23
22
|
references: {
|
|
24
23
|
model: user_1.default,
|
|
24
|
+
key: "id",
|
|
25
25
|
},
|
|
26
|
-
|
|
27
|
-
priority: {
|
|
28
|
-
type: sequelize_1.DataTypes.SMALLINT,
|
|
29
|
-
field: "priority",
|
|
30
|
-
},
|
|
31
|
-
customLabel: {
|
|
32
|
-
type: sequelize_1.DataTypes.STRING,
|
|
33
|
-
field: "custom_label",
|
|
26
|
+
onDelete: "CASCADE",
|
|
34
27
|
},
|
|
35
28
|
createdAt: sequelize_1.DataTypes.DATE,
|
|
36
|
-
updatedAt: sequelize_1.DataTypes.DATE,
|
|
37
29
|
}, {
|
|
38
|
-
tableName: "featured_cappers",
|
|
39
30
|
sequelize: pb_sequelize_1.default,
|
|
31
|
+
tableName: "recurly_payment_monitoring_whitelist",
|
|
32
|
+
timestamps: false,
|
|
40
33
|
});
|
|
41
|
-
user_1.default.hasOne(
|
|
34
|
+
user_1.default.hasOne(RecurlyPaymentMonitoringWhitelist, {
|
|
42
35
|
foreignKey: "userId",
|
|
43
36
|
sourceKey: "id",
|
|
37
|
+
as: "paymentMonitoringWhitelist",
|
|
44
38
|
});
|
|
45
|
-
|
|
46
|
-
foreignKey: "
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
RecurlyPaymentMonitoringWhitelist.belongsTo(user_1.default, {
|
|
40
|
+
foreignKey: "userId",
|
|
41
|
+
targetKey: "id",
|
|
42
|
+
as: "user",
|
|
49
43
|
});
|
|
50
|
-
exports.default =
|
|
51
|
-
//# sourceMappingURL=
|
|
44
|
+
exports.default = RecurlyPaymentMonitoringWhitelist;
|
|
45
|
+
//# sourceMappingURL=recurly-payment-monitoring-whitelist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurly-payment-monitoring-whitelist.js","sourceRoot":"","sources":["../../typed-model/recurly-payment-monitoring-whitelist.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kDAA0B;AAE1B,kEAAuC;AAEvC,MAAM,iCAAkC,SAAQ,iBAG/C;CAIA;AAED,iCAAiC,CAAC,IAAI,CACpC;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,IAAI;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;YACX,GAAG,EAAE,IAAI;SACV;QACD,QAAQ,EAAE,SAAS;KACpB;IACD,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAT,sBAAS;IACT,SAAS,EAAE,sCAAsC;IACjD,UAAU,EAAE,KAAK;CAClB,CACF,CAAC;AAGF,cAAI,CAAC,MAAM,CAAC,iCAAiC,EAAE;IAC7C,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,EAAE,EAAE,4BAA4B;CACjC,CAAC,CAAC;AAEH,iCAAiC,CAAC,SAAS,CAAC,cAAI,EAAE;IAChD,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,EAAE,EAAE,MAAM;CACX,CAAC,CAAC;AAEH,kBAAe,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require("dotenv").config();
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
development: {
|
|
5
|
+
dialect: "postgres",
|
|
6
|
+
host: process.env.TS_DB_HOST,
|
|
7
|
+
port: process.env.TS_DB_PORT,
|
|
8
|
+
database: process.env.TS_DB_NAME,
|
|
9
|
+
username: process.env.TS_DB_USER,
|
|
10
|
+
password: process.env.TS_DB_PASSWORD,
|
|
11
|
+
dialectOptions: {
|
|
12
|
+
ssl: false,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
production: {
|
|
16
|
+
dialect: "postgres",
|
|
17
|
+
host: process.env.TS_DB_HOST,
|
|
18
|
+
port: process.env.TS_DB_PORT,
|
|
19
|
+
database: process.env.TS_DB_NAME,
|
|
20
|
+
username: process.env.TS_DB_USER,
|
|
21
|
+
password: process.env.TS_DB_PASSWORD,
|
|
22
|
+
dialectOptions: {
|
|
23
|
+
ssl: {
|
|
24
|
+
require: true,
|
|
25
|
+
rejectUnauthorized: false,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
package/package.json
CHANGED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sequelize_1 = require("sequelize");
|
|
4
|
-
exports.default = {
|
|
5
|
-
async up(queryInterface, sequelize) {
|
|
6
|
-
await queryInterface.createTable("users_on_bets", {
|
|
7
|
-
id: {
|
|
8
|
-
type: sequelize_1.DataTypes.BIGINT,
|
|
9
|
-
primaryKey: true,
|
|
10
|
-
allowNull: false,
|
|
11
|
-
defaultValue: sequelize.fn("next_id"),
|
|
12
|
-
},
|
|
13
|
-
userId: {
|
|
14
|
-
type: sequelize_1.DataTypes.BIGINT,
|
|
15
|
-
field: "user_id",
|
|
16
|
-
allowNull: false,
|
|
17
|
-
references: {
|
|
18
|
-
model: "users",
|
|
19
|
-
key: "id",
|
|
20
|
-
},
|
|
21
|
-
onUpdate: "CASCADE",
|
|
22
|
-
onDelete: "CASCADE",
|
|
23
|
-
},
|
|
24
|
-
betId: {
|
|
25
|
-
type: sequelize_1.DataTypes.BIGINT,
|
|
26
|
-
field: "bet_id",
|
|
27
|
-
allowNull: false,
|
|
28
|
-
references: {
|
|
29
|
-
model: "bets",
|
|
30
|
-
key: "id",
|
|
31
|
-
},
|
|
32
|
-
onUpdate: "CASCADE",
|
|
33
|
-
onDelete: "CASCADE",
|
|
34
|
-
},
|
|
35
|
-
betPlaced: {
|
|
36
|
-
type: sequelize_1.DataTypes.BOOLEAN,
|
|
37
|
-
field: "bet_placed",
|
|
38
|
-
allowNull: true,
|
|
39
|
-
comment: "true = placed, false = not placed, null = unanswered",
|
|
40
|
-
},
|
|
41
|
-
clickedOddPrice: {
|
|
42
|
-
type: sequelize_1.DataTypes.FLOAT,
|
|
43
|
-
field: "clicked_odd_price",
|
|
44
|
-
allowNull: true,
|
|
45
|
-
comment: "The odd price when user clicked the link",
|
|
46
|
-
},
|
|
47
|
-
metadata: {
|
|
48
|
-
type: sequelize_1.DataTypes.JSONB,
|
|
49
|
-
field: "metadata",
|
|
50
|
-
allowNull: true,
|
|
51
|
-
comment: "Stores clicked odd/parlay data and feedback information",
|
|
52
|
-
},
|
|
53
|
-
createdAt: {
|
|
54
|
-
type: sequelize_1.DataTypes.DATE,
|
|
55
|
-
field: "created_at",
|
|
56
|
-
allowNull: false,
|
|
57
|
-
},
|
|
58
|
-
updatedAt: {
|
|
59
|
-
type: sequelize_1.DataTypes.DATE,
|
|
60
|
-
field: "updated_at",
|
|
61
|
-
allowNull: false,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
// Add indexes for better query performance
|
|
65
|
-
await queryInterface.addIndex("users_on_bets", ["user_id"]);
|
|
66
|
-
await queryInterface.addIndex("users_on_bets", ["bet_id"]);
|
|
67
|
-
await queryInterface.addIndex("users_on_bets", ["user_id", "bet_placed"]);
|
|
68
|
-
await queryInterface.addIndex("users_on_bets", ["modal_dismissed_at"]);
|
|
69
|
-
},
|
|
70
|
-
async down(queryInterface, sequelize) {
|
|
71
|
-
await queryInterface.dropTable("users_on_bets");
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
//# sourceMappingURL=20251002044115-create-users-on-bets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"20251002044115-create-users-on-bets.js","sourceRoot":"","sources":["../../migrations/20251002044115-create-users-on-bets.ts"],"names":[],"mappings":";;AAAA,yCAAiE;AAEjE,kBAAe;IACb,KAAK,CAAC,EAAE,CAAC,cAA8B,EAAE,SAAoB;QAC3D,MAAM,cAAc,CAAC,WAAW,CAAC,eAAe,EAAE;YAChD,EAAE,EAAE;gBACF,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;aACtC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,MAAM;oBACb,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,sDAAsD;aAChE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,0CAA0C;aACpD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,yDAAyD;aACnE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;SACF,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1E,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA8B,EAAE,SAAoB;QAC7D,MAAM,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"featured-capper.js","sourceRoot":"","sources":["../../typed-model/featured-capper.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAE1B,mEAAmE;AACnE,MAAM,cAAe,SAAQ,iBAG5B;CAUA;AAED,cAAc,CAAC,IAAI,CACjB;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,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;SACZ;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,QAAQ;QACxB,KAAK,EAAE,UAAU;KAClB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,cAAc;KACtB;IAED,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,cAAI,CAAC,MAAM,CAAC,cAAc,EAAE;IAC1B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,cAAc,CAAC,MAAM,CAAC,cAAI,EAAE;IAC1B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,kBAAe,cAAc,CAAC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
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 user_1 = __importDefault(require("./user"));
|
|
9
|
-
const bet_1 = __importDefault(require("./bet"));
|
|
10
|
-
// order of InferAttributes & InferCreationAttributes is important.
|
|
11
|
-
class UsersOnBets extends sequelize_1.Model {
|
|
12
|
-
}
|
|
13
|
-
UsersOnBets.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
|
-
userId: {
|
|
21
|
-
type: sequelize_1.DataTypes.BIGINT,
|
|
22
|
-
allowNull: false,
|
|
23
|
-
field: "user_id",
|
|
24
|
-
references: {
|
|
25
|
-
model: user_1.default,
|
|
26
|
-
key: "id",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
betId: {
|
|
30
|
-
type: sequelize_1.DataTypes.BIGINT,
|
|
31
|
-
allowNull: false,
|
|
32
|
-
field: "bet_id",
|
|
33
|
-
references: {
|
|
34
|
-
model: bet_1.default,
|
|
35
|
-
key: "id",
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
betPlaced: {
|
|
39
|
-
type: sequelize_1.DataTypes.BOOLEAN,
|
|
40
|
-
allowNull: true,
|
|
41
|
-
field: "bet_placed",
|
|
42
|
-
comment: "true = placed, false = not placed, null = unanswered",
|
|
43
|
-
},
|
|
44
|
-
clickedOddPrice: {
|
|
45
|
-
type: sequelize_1.DataTypes.FLOAT,
|
|
46
|
-
allowNull: true,
|
|
47
|
-
field: "clicked_odd_price",
|
|
48
|
-
comment: "The odd price when user clicked the link",
|
|
49
|
-
},
|
|
50
|
-
metadata: {
|
|
51
|
-
type: sequelize_1.DataTypes.JSONB,
|
|
52
|
-
allowNull: true,
|
|
53
|
-
field: "metadata",
|
|
54
|
-
comment: "Stores clicked odd/parlay data and feedback information",
|
|
55
|
-
},
|
|
56
|
-
modalDismissedAt: {
|
|
57
|
-
type: sequelize_1.DataTypes.DATE,
|
|
58
|
-
allowNull: true,
|
|
59
|
-
field: "modal_dismissed_at",
|
|
60
|
-
comment: "Timestamp when user dismissed modal without confirming",
|
|
61
|
-
},
|
|
62
|
-
createdAt: {
|
|
63
|
-
type: sequelize_1.DataTypes.DATE,
|
|
64
|
-
allowNull: false,
|
|
65
|
-
field: "created_at",
|
|
66
|
-
},
|
|
67
|
-
updatedAt: {
|
|
68
|
-
type: sequelize_1.DataTypes.DATE,
|
|
69
|
-
allowNull: false,
|
|
70
|
-
field: "updated_at",
|
|
71
|
-
},
|
|
72
|
-
}, {
|
|
73
|
-
tableName: "users_on_bets",
|
|
74
|
-
sequelize: pb_sequelize_1.default,
|
|
75
|
-
});
|
|
76
|
-
// Define associations
|
|
77
|
-
user_1.default.hasMany(UsersOnBets, {
|
|
78
|
-
foreignKey: "userId",
|
|
79
|
-
sourceKey: "id",
|
|
80
|
-
onDelete: "CASCADE",
|
|
81
|
-
constraints: true,
|
|
82
|
-
});
|
|
83
|
-
UsersOnBets.belongsTo(user_1.default, {
|
|
84
|
-
foreignKey: "userId",
|
|
85
|
-
targetKey: "id",
|
|
86
|
-
});
|
|
87
|
-
bet_1.default.hasMany(UsersOnBets, {
|
|
88
|
-
foreignKey: "betId",
|
|
89
|
-
sourceKey: "id",
|
|
90
|
-
onDelete: "CASCADE",
|
|
91
|
-
constraints: true,
|
|
92
|
-
});
|
|
93
|
-
UsersOnBets.belongsTo(bet_1.default, {
|
|
94
|
-
foreignKey: "betId",
|
|
95
|
-
targetKey: "id",
|
|
96
|
-
});
|
|
97
|
-
exports.default = UsersOnBets;
|
|
98
|
-
//# sourceMappingURL=users-on-bets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"users-on-bets.js","sourceRoot":"","sources":["../../typed-model/users-on-bets.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,gDAAwB;AAyBxB,mEAAmE;AACnE,MAAM,WAAY,SAAQ,iBAGzB;CAeA;AAED,WAAW,CAAC,IAAI,CACd;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,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;YACX,GAAG,EAAE,IAAI;SACV;KACF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE;YACV,KAAK,EAAE,aAAG;YACV,GAAG,EAAE,IAAI;SACV;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,sDAAsD;KAChE;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,0CAA0C;KACpD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,yDAAyD;KACnE;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,wDAAwD;KAClE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;CACF,EACD;IACE,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,sBAAsB;AACtB,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IACxB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,cAAI,EAAE;IAC1B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,aAAG,CAAC,OAAO,CAAC,WAAW,EAAE;IACvB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,aAAG,EAAE;IACzB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,kBAAe,WAAW,CAAC"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* @param message The log message
|
|
5
|
-
* @param options Additional context for the log entry
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* // Basic usage
|
|
9
|
-
* logger("User login successful");
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* // With user ID
|
|
13
|
-
* logger("User login successful", { userId: "123456" });
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* // With error tracking (standard Error)
|
|
17
|
-
* try {
|
|
18
|
-
* throw new Error("Something went wrong");
|
|
19
|
-
* } catch (error) {
|
|
20
|
-
* logger("Operation failed", {
|
|
21
|
-
* userId: "user123",
|
|
22
|
-
* level: "error",
|
|
23
|
-
* endpoint: "/auth",
|
|
24
|
-
* method: "processPayment",
|
|
25
|
-
* error
|
|
26
|
-
* });
|
|
27
|
-
* }
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* // With object-like error (e.g., from an API)
|
|
31
|
-
* const apiError = { status: 403, message: "Forbidden", code: "ACCESS_DENIED" };
|
|
32
|
-
* logger("API request failed", { error: apiError, level: "error" });
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* // With primitive error
|
|
36
|
-
* logger("Validation failed", { error: "Invalid input", level: "warn" });
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* // With request tracking
|
|
40
|
-
* logger("API request received", {
|
|
41
|
-
* requestId: req.headers['x-request-id'],
|
|
42
|
-
* endpoint: "/auth",
|
|
43
|
-
* method: "validateToken"
|
|
44
|
-
* action: "validateToken"
|
|
45
|
-
* });
|
|
46
|
-
*/
|
|
47
|
-
const logger = (message, options) => {
|
|
48
|
-
const timestamp = new Date().toISOString();
|
|
49
|
-
const environment = process.env.ENVIRONMENT || "development";
|
|
50
|
-
const logEntry = Object.assign(Object.assign({ message, requestId: (options === null || options === void 0 ? void 0 : options.requestId) || "", timestamp, level: (options === null || options === void 0 ? void 0 : options.level) || "info", environment, endpoint: (options === null || options === void 0 ? void 0 : options.endpoint) || "", method: (options === null || options === void 0 ? void 0 : options.method) || "", action: (options === null || options === void 0 ? void 0 : options.action) || "", userId: (options === null || options === void 0 ? void 0 : options.userId) || "" }, ((options === null || options === void 0 ? void 0 : options.error)
|
|
51
|
-
? {
|
|
52
|
-
error: (() => {
|
|
53
|
-
var _a, _b, _c;
|
|
54
|
-
// Handle different error types
|
|
55
|
-
if (options.error instanceof Error) {
|
|
56
|
-
// Standard Error object
|
|
57
|
-
return {
|
|
58
|
-
name: (_a = options.error) === null || _a === void 0 ? void 0 : _a.name,
|
|
59
|
-
message: (_b = options.error) === null || _b === void 0 ? void 0 : _b.message,
|
|
60
|
-
stack: (_c = options.error) === null || _c === void 0 ? void 0 : _c.stack,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
else if (typeof options.error === "object" &&
|
|
64
|
-
options.error !== null) {
|
|
65
|
-
// Object-like error but not an Error instance
|
|
66
|
-
const errorObj = options.error;
|
|
67
|
-
return {
|
|
68
|
-
name: (errorObj === null || errorObj === void 0 ? void 0 : errorObj.name) || "UnknownError",
|
|
69
|
-
message: (errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) || String(errorObj),
|
|
70
|
-
details: errorObj,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// Primitive or other non-object error
|
|
75
|
-
return {
|
|
76
|
-
name: "UnknownError",
|
|
77
|
-
message: String(options.error),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
})(),
|
|
81
|
-
}
|
|
82
|
-
: {})), ((options === null || options === void 0 ? void 0 : options.additionalData) ? { data: options.additionalData } : {}));
|
|
83
|
-
// Log as JSON string on production for easier parsing in CloudWatch
|
|
84
|
-
const outputLog = environment === "production"
|
|
85
|
-
? JSON.stringify(logEntry)
|
|
86
|
-
: JSON.stringify(logEntry, null, 2);
|
|
87
|
-
console.log(outputLog);
|
|
88
|
-
};
|
|
89
|
-
exports.default = logger;
|
|
90
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../utils/lambdaUtils/logger.ts"],"names":[],"mappings":";;AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,OAAuB,EAAE,EAAE;IAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa,CAAC;IAE7D,MAAM,QAAQ,iCACZ,OAAO,EACP,SAAS,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,EAAE,EACnC,SAAS,EACT,KAAK,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,MAAM,EAC/B,WAAW,EACX,QAAQ,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,EAAE,EACjC,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,EAC7B,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,EAC7B,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,IAC1B,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;QAChB,CAAC,CAAC;YACE,KAAK,EAAE,CAAC,GAAG,EAAE;;gBACX,+BAA+B;gBAC/B,IAAI,OAAO,CAAC,KAAK,YAAY,KAAK,EAAE;oBAClC,wBAAwB;oBACxB,OAAO;wBACL,IAAI,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI;wBACzB,OAAO,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,OAAO;wBAC/B,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK;qBAC5B,CAAC;iBACH;qBAAM,IACL,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oBACjC,OAAO,CAAC,KAAK,KAAK,IAAI,EACtB;oBACA,8CAA8C;oBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAA4B,CAAC;oBACtD,OAAO;wBACL,IAAI,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,cAAc;wBACtC,OAAO,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,KAAI,MAAM,CAAC,QAAQ,CAAC;wBAC9C,OAAO,EAAE,QAAQ;qBAClB,CAAC;iBACH;qBAAM;oBACL,sCAAsC;oBACtC,OAAO;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;qBAC/B,CAAC;iBACH;YACH,CAAC,CAAC,EAAE;SACL;QACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IAEF,oEAAoE;IACpE,MAAM,SAAS,GACb,WAAW,KAAK,YAAY;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|