@winible/winible-typed 2.91.2 → 2.92.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.
@@ -0,0 +1,74 @@
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
@@ -0,0 +1 @@
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 +1 @@
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;CAa1E;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,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,cAAc;KACtB;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"}
1
+ {"version":3,"file":"bet.js","sourceRoot":"","sources":["../../typed-model/bet.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,wCAAsD;AAGtD,mEAAmE;AACnE,MAAM,GAAI,SAAQ,iBAAyD;CAa1E;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,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,cAAc;KACtB;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.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;
6
+ exports.UsersOnBets = 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 = exports.MigrationToken = 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,6 +103,8 @@ 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; } });
106
108
  var migration_token_1 = require("./migration-token");
107
109
  Object.defineProperty(exports, "MigrationToken", { enumerable: true, get: function () { return __importDefault(migration_token_1).default; } });
108
110
  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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../typed-model/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
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
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winible/winible-typed",
3
- "version": "2.91.2",
3
+ "version": "2.92.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -9,6 +9,7 @@ import {
9
9
  import sequelize from "./pb-sequelize";
10
10
  import Post from "./post";
11
11
  import { BetStatusType, BetType } from "../src/types";
12
+ import { BetPlacedStatus } from "./users-on-bets";
12
13
 
13
14
  // order of InferAttributes & InferCreationAttributes is important.
14
15
  class Bet extends Model<InferAttributes<Bet>, InferCreationAttributes<Bet>> {
@@ -147,4 +147,4 @@ Dispute.belongsTo(Transaction, {
147
147
  });
148
148
 
149
149
  export default Dispute;
150
- export { DisputeAlertType, DisputeStatus };
150
+ export type { DisputeAlertType, DisputeStatus };
@@ -47,6 +47,7 @@ export { default as AffiliateCode } from "./affiliate-code";
47
47
  export { default as AffiliateLinkType } from "./affiliate-links-types";
48
48
  export { default as LimitedOffer } from "./limited-offer";
49
49
  export { default as Bet } from "./bet";
50
+ export { default as UsersOnBets } from "./users-on-bets";
50
51
  export { default as MigrationToken } from "./migration-token";
51
52
  export { default as SMSCustomMessage } from "./sms-custom-message";
52
53
  export { default as Permission } from "./permission";
@@ -0,0 +1,150 @@
1
+ import {
2
+ Model,
3
+ InferAttributes,
4
+ InferCreationAttributes,
5
+ CreationOptional,
6
+ DataTypes,
7
+ } from "sequelize";
8
+
9
+ import sequelize from "./pb-sequelize";
10
+ import User from "./user";
11
+ import Bet from "./bet";
12
+ import Post from "./post";
13
+ import Parlay from "./parlay";
14
+ import Odd from "./odd";
15
+
16
+ type BetPlacedStatus = boolean | null; // true = placed, false = not placed, null = unanswered
17
+
18
+ interface UserBetMetadata {
19
+ // Clicked odd/parlay information
20
+ type?: "odd" | "parlay_odd";
21
+ id?: string;
22
+ clickedPrice?: number;
23
+
24
+ // Feedback information when bet not placed
25
+ feedback?: {
26
+ reason?:
27
+ | "odds_changed"
28
+ | "didnt_want_signup"
29
+ | "link_broken"
30
+ | "no_issues"
31
+ | "other";
32
+ customFeedback?: string;
33
+ };
34
+ }
35
+
36
+ // order of InferAttributes & InferCreationAttributes is important.
37
+ class UsersOnBets extends Model<
38
+ InferAttributes<UsersOnBets>,
39
+ InferCreationAttributes<UsersOnBets>
40
+ > {
41
+ declare id: CreationOptional<string>;
42
+ declare userId: string;
43
+ declare betId: string;
44
+ declare betPlaced: BetPlacedStatus;
45
+ declare clickedOddPrice?: number;
46
+ declare metadata?: UserBetMetadata;
47
+ declare modalDismissedAt?: Date;
48
+
49
+ declare createdAt: CreationOptional<Date>;
50
+ declare updatedAt: CreationOptional<Date>;
51
+
52
+ // Associations
53
+ declare User?: User;
54
+ declare Bet?: Bet & { Post: Post; Odds: Odd[]; Parlays: Parlay[] };
55
+ }
56
+
57
+ UsersOnBets.init(
58
+ {
59
+ id: {
60
+ type: DataTypes.BIGINT,
61
+ primaryKey: true,
62
+ allowNull: false,
63
+ defaultValue: sequelize.fn("next_id"),
64
+ },
65
+ userId: {
66
+ type: DataTypes.BIGINT,
67
+ allowNull: false,
68
+ field: "user_id",
69
+ references: {
70
+ model: User,
71
+ key: "id",
72
+ },
73
+ },
74
+ betId: {
75
+ type: DataTypes.BIGINT,
76
+ allowNull: false,
77
+ field: "bet_id",
78
+ references: {
79
+ model: Bet,
80
+ key: "id",
81
+ },
82
+ },
83
+ betPlaced: {
84
+ type: DataTypes.BOOLEAN,
85
+ allowNull: true,
86
+ field: "bet_placed",
87
+ comment: "true = placed, false = not placed, null = unanswered",
88
+ },
89
+ clickedOddPrice: {
90
+ type: DataTypes.FLOAT,
91
+ allowNull: true,
92
+ field: "clicked_odd_price",
93
+ comment: "The odd price when user clicked the link",
94
+ },
95
+ metadata: {
96
+ type: DataTypes.JSONB,
97
+ allowNull: true,
98
+ field: "metadata",
99
+ comment: "Stores clicked odd/parlay data and feedback information",
100
+ },
101
+ modalDismissedAt: {
102
+ type: DataTypes.DATE,
103
+ allowNull: true,
104
+ field: "modal_dismissed_at",
105
+ comment: "Timestamp when user dismissed modal without confirming",
106
+ },
107
+ createdAt: {
108
+ type: DataTypes.DATE,
109
+ allowNull: false,
110
+ field: "created_at",
111
+ },
112
+ updatedAt: {
113
+ type: DataTypes.DATE,
114
+ allowNull: false,
115
+ field: "updated_at",
116
+ },
117
+ },
118
+ {
119
+ tableName: "users_on_bets",
120
+ sequelize,
121
+ }
122
+ );
123
+
124
+ // Define associations
125
+ User.hasMany(UsersOnBets, {
126
+ foreignKey: "userId",
127
+ sourceKey: "id",
128
+ onDelete: "CASCADE",
129
+ constraints: true,
130
+ });
131
+
132
+ UsersOnBets.belongsTo(User, {
133
+ foreignKey: "userId",
134
+ targetKey: "id",
135
+ });
136
+
137
+ Bet.hasMany(UsersOnBets, {
138
+ foreignKey: "betId",
139
+ sourceKey: "id",
140
+ onDelete: "CASCADE",
141
+ constraints: true,
142
+ });
143
+
144
+ UsersOnBets.belongsTo(Bet, {
145
+ foreignKey: "betId",
146
+ targetKey: "id",
147
+ });
148
+
149
+ export default UsersOnBets;
150
+ export type { UserBetMetadata, BetPlacedStatus };