codebase-models 1.0.6 → 2.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 (145) hide show
  1. package/.github/workflows/npm-publish.yml +33 -0
  2. package/dist/index.d.ts +5 -4
  3. package/dist/index.js +20 -11
  4. package/dist/src/models/Announcement.d.ts +6 -5
  5. package/dist/src/models/Announcement.js +29 -9
  6. package/dist/src/models/Audience.d.ts +2 -1
  7. package/dist/src/models/Audience.js +6 -1
  8. package/dist/src/models/{Experiments.d.ts → BqPreCompiledData.d.ts} +12 -30
  9. package/dist/src/models/{ClientExperiment.js → BqPreCompiledData.js} +26 -46
  10. package/dist/src/models/CVRReport.d.ts +1 -0
  11. package/dist/src/models/CVRReport.js +13 -0
  12. package/dist/src/models/Client.d.ts +3 -1
  13. package/dist/src/models/Client.js +31 -45
  14. package/dist/src/models/ClientAdditionalRevenue.d.ts +1 -1
  15. package/dist/src/models/ClientAdditionalRevenue.js +3 -2
  16. package/dist/src/models/ClientLearning.d.ts +1 -1
  17. package/dist/src/models/ClientLearning.js +10 -6
  18. package/dist/src/models/ClientLinks.d.ts +1 -1
  19. package/dist/src/models/ClientLinks.js +15 -6
  20. package/dist/src/models/ClientNextSteps.d.ts +1 -1
  21. package/dist/src/models/ClientNextSteps.js +3 -2
  22. package/dist/src/models/ClientNote.d.ts +1 -1
  23. package/dist/src/models/ClientNote.js +3 -2
  24. package/dist/src/models/ClientReportsTemp.d.ts +1 -1
  25. package/dist/src/models/ClientReportsTemp.js +20 -2
  26. package/dist/src/models/ClientRetention.d.ts +1 -0
  27. package/dist/src/models/ClientRetention.js +25 -0
  28. package/dist/src/models/ClientScript.d.ts +1 -1
  29. package/dist/src/models/ClientScript.js +24 -8
  30. package/dist/src/models/ClientStrategy.d.ts +1 -1
  31. package/dist/src/models/ClientStrategy.js +3 -2
  32. package/dist/src/models/ClientSurvay.d.ts +1 -0
  33. package/dist/src/models/ClientSurvay.js +5 -0
  34. package/dist/src/models/Environment.d.ts +2 -0
  35. package/dist/src/models/Environment.js +26 -2
  36. package/dist/src/models/Faqs.d.ts +1 -0
  37. package/dist/src/models/Faqs.js +5 -0
  38. package/dist/src/models/Feedback.d.ts +1 -1
  39. package/dist/src/models/Feedback.js +3 -2
  40. package/dist/src/models/Goal.d.ts +2 -1
  41. package/dist/src/models/Goal.js +33 -11
  42. package/dist/src/models/Hypothesis.d.ts +2 -0
  43. package/dist/src/models/Hypothesis.js +49 -9
  44. package/dist/src/models/HypothesisSheet.d.ts +1 -1
  45. package/dist/src/models/HypothesisSheet.js +26 -2
  46. package/dist/src/models/LandingPages.d.ts +3 -0
  47. package/dist/src/models/LandingPages.js +29 -0
  48. package/dist/src/models/NewIdeas.d.ts +1 -1
  49. package/dist/src/models/NewIdeas.js +3 -2
  50. package/dist/src/models/Notification.d.ts +1 -0
  51. package/dist/src/models/Notification.js +29 -1
  52. package/dist/src/models/{ClientExperiment.d.ts → Organization.d.ts} +18 -29
  53. package/dist/src/models/{Experiments.js → Organization.js} +36 -54
  54. package/dist/src/models/Page.d.ts +3 -1
  55. package/dist/src/models/Page.js +56 -4
  56. package/dist/src/models/PageElement.d.ts +3 -0
  57. package/dist/src/models/PageElement.js +59 -7
  58. package/dist/src/models/PageTestType.d.ts +2 -0
  59. package/dist/src/models/PageTestType.js +41 -5
  60. package/dist/src/models/Portfolio.d.ts +1 -0
  61. package/dist/src/models/Portfolio.js +5 -0
  62. package/dist/src/models/PrecalculationFilters.d.ts +36 -0
  63. package/dist/src/models/PrecalculationFilters.js +77 -0
  64. package/dist/src/models/QueryLog.d.ts +1 -1
  65. package/dist/src/models/QueryLog.js +3 -2
  66. package/dist/src/models/ReadNotification.d.ts +1 -0
  67. package/dist/src/models/ReadNotification.js +29 -1
  68. package/dist/src/models/Report.d.ts +2 -0
  69. package/dist/src/models/Report.js +35 -47
  70. package/dist/src/models/Role.d.ts +3 -0
  71. package/dist/src/models/Role.js +50 -7
  72. package/dist/src/models/SavedSegment.d.ts +1 -0
  73. package/dist/src/models/SavedSegment.js +5 -0
  74. package/dist/src/models/Segment.d.ts +1 -0
  75. package/dist/src/models/Segment.js +5 -0
  76. package/dist/src/models/SegmentCombination.d.ts +1 -0
  77. package/dist/src/models/SegmentCombination.js +5 -0
  78. package/dist/src/models/Snippet.d.ts +2 -1
  79. package/dist/src/models/Snippet.js +28 -3
  80. package/dist/src/models/StageInCustomerJourney.d.ts +3 -1
  81. package/dist/src/models/StageInCustomerJourney.js +56 -4
  82. package/dist/src/models/Tag.d.ts +1 -0
  83. package/dist/src/models/Tag.js +29 -1
  84. package/dist/src/models/Temp.d.ts +1 -0
  85. package/dist/src/models/Temp.js +29 -1
  86. package/dist/src/models/Test.d.ts +18 -17
  87. package/dist/src/models/Test.js +82 -185
  88. package/dist/src/models/TestSequentialValue.d.ts +1 -0
  89. package/dist/src/models/TestSequentialValue.js +5 -0
  90. package/dist/src/models/Tier.d.ts +1 -0
  91. package/dist/src/models/Tier.js +29 -1
  92. package/dist/src/models/Trigger.d.ts +1 -0
  93. package/dist/src/models/Trigger.js +29 -1
  94. package/dist/src/models/User.d.ts +1 -0
  95. package/dist/src/models/User.js +9 -10
  96. package/index.ts +6 -4
  97. package/package.json +1 -1
  98. package/src/models/Announcement.ts +50 -27
  99. package/src/models/Audience.ts +6 -0
  100. package/src/models/BqPreCompiledData.ts +62 -0
  101. package/src/models/CVRReport.ts +17 -0
  102. package/src/models/Client.ts +39 -59
  103. package/src/models/ClientAdditionalRevenue.ts +4 -3
  104. package/src/models/ClientLearning.ts +11 -7
  105. package/src/models/ClientLinks.ts +18 -7
  106. package/src/models/ClientNextSteps.ts +4 -3
  107. package/src/models/ClientNote.ts +4 -3
  108. package/src/models/ClientReportsTemp.ts +24 -3
  109. package/src/models/ClientRetention.ts +27 -1
  110. package/src/models/ClientScript.ts +26 -9
  111. package/src/models/ClientStrategy.ts +4 -3
  112. package/src/models/ClientSurvay.ts +6 -0
  113. package/src/models/Environment.ts +31 -3
  114. package/src/models/Faqs.ts +6 -0
  115. package/src/models/Feedback.ts +4 -3
  116. package/src/models/Goal.ts +36 -12
  117. package/src/models/Hypothesis.ts +29 -8
  118. package/src/models/HypothesisSheet.ts +3 -2
  119. package/src/models/LandingPages.ts +34 -0
  120. package/src/models/NewIdeas.ts +4 -3
  121. package/src/models/Notification.ts +6 -0
  122. package/src/models/Organization.ts +86 -0
  123. package/src/models/Page.ts +62 -5
  124. package/src/models/PageElement.ts +38 -7
  125. package/src/models/PageTestType.ts +21 -4
  126. package/src/models/Portfolio.ts +6 -0
  127. package/src/models/PrecalculationFilters.ts +67 -0
  128. package/src/models/QueryLog.ts +4 -3
  129. package/src/models/ReadNotification.ts +6 -0
  130. package/src/models/Report.ts +54 -66
  131. package/src/models/Role.ts +31 -6
  132. package/src/models/SavedSegment.ts +6 -0
  133. package/src/models/Segment.ts +6 -0
  134. package/src/models/SegmentCombination.ts +6 -0
  135. package/src/models/Snippet.ts +32 -4
  136. package/src/models/StageInCustomerJourney.ts +33 -5
  137. package/src/models/Tag.ts +6 -0
  138. package/src/models/Temp.ts +6 -0
  139. package/src/models/Test.ts +155 -243
  140. package/src/models/TestSequentialValue.ts +6 -0
  141. package/src/models/Tier.ts +6 -0
  142. package/src/models/Trigger.ts +6 -0
  143. package/src/models/User.ts +11 -10
  144. package/src/models/ClientExperiment.ts +0 -113
  145. package/src/models/Experiments.ts +0 -118
@@ -1,38 +1,78 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const mongoose_1 = require("mongoose");
26
+ const mongoose_1 = __importStar(require("mongoose"));
4
27
  const HypothesisSchema = new mongoose_1.Schema({
28
+ organizationId: {
29
+ type: mongoose_1.default.Schema.Types.ObjectId,
30
+ ref: "organization",
31
+ default: null,
32
+ },
5
33
  hypothesisNumber: {
6
34
  type: String,
35
+ trim: true,
36
+ index: true,
7
37
  },
8
38
  name: {
9
39
  type: String,
10
40
  required: true,
41
+ trim: true,
42
+ index: true,
11
43
  },
12
44
  action: {
13
45
  type: String,
14
46
  required: true,
47
+ trim: true,
15
48
  },
16
49
  result: {
17
50
  type: String,
18
51
  required: true,
52
+ trim: true,
19
53
  },
20
54
  expectation: {
21
55
  type: String,
22
56
  required: true,
57
+ trim: true,
23
58
  },
24
59
  tagged: {
25
60
  type: String,
26
61
  default: "General Purpose",
62
+ trim: true,
63
+ index: true,
27
64
  },
28
- createdAt: {
29
- type: Date,
30
- default: new Date(),
31
- },
32
- updatedAt: {
33
- type: Date,
34
- default: new Date(),
35
- },
65
+ isActive: {
66
+ type: Boolean,
67
+ default: true,
68
+ index: true,
69
+ }
70
+ }, {
71
+ timestamps: true
36
72
  });
73
+ // Compound indexes for common query patterns
74
+ HypothesisSchema.index({ hypothesisNumber: 1, isActive: 1 });
75
+ HypothesisSchema.index({ tagged: 1, isActive: 1 });
76
+ HypothesisSchema.index({ name: 1, isActive: 1 });
37
77
  const Hypothesis = (0, mongoose_1.model)("hypos", HypothesisSchema);
38
78
  exports.default = Hypothesis;
@@ -24,7 +24,7 @@
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import mongoose, { Document } from "mongoose";
26
26
  export interface IHypothesisSheet extends Document {
27
- organizationId?: string;
27
+ organizationId?: mongoose.Schema.Types.ObjectId;
28
28
  client?: mongoose.Schema.Types.ObjectId;
29
29
  viewId?: string;
30
30
  pageelement?: mongoose.Schema.Types.ObjectId;
@@ -1,14 +1,38 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const mongoose_1 = require("mongoose");
29
+ const mongoose_1 = __importStar(require("mongoose"));
7
30
  const constant_1 = __importDefault(require("../constant"));
8
31
  const HypothesisSheetSchema = new mongoose_1.Schema({
9
32
  organizationId: {
10
- type: String,
33
+ type: mongoose_1.default.Schema.Types.ObjectId,
11
34
  default: null,
35
+ ref: "organization",
12
36
  },
13
37
  client: {
14
38
  type: mongoose_1.Schema.Types.ObjectId,
@@ -25,12 +25,15 @@
25
25
  import mongoose, { Document } from "mongoose";
26
26
  export interface ILandingPagesData extends Document {
27
27
  conversionRate?: Number;
28
+ lastUpdated?: Date;
28
29
  }
29
30
  export interface ILandingPages extends Document {
30
31
  title: string;
31
32
  client?: mongoose.Schema.Types.ObjectId;
33
+ organizationId?: mongoose.Schema.Types.ObjectId;
32
34
  screenshot?: string;
33
35
  dataPoints?: ILandingPagesData;
36
+ isActive?: boolean;
34
37
  }
35
38
  declare const LandingPages: mongoose.Model<ILandingPages, {}, {}, {}, mongoose.Document<unknown, {}, ILandingPages> & ILandingPages & {
36
39
  _id: mongoose.Types.ObjectId;
@@ -27,28 +27,57 @@ const mongoose_1 = __importStar(require("mongoose"));
27
27
  const LandingPageDataSchema = new mongoose_1.Schema({
28
28
  conversionRate: {
29
29
  type: Number,
30
+ min: 0,
31
+ max: 100,
32
+ index: true,
30
33
  },
34
+ lastUpdated: {
35
+ type: Date,
36
+ default: Date.now,
37
+ }
31
38
  });
32
39
  const LandingPagesSchema = new mongoose_1.Schema({
33
40
  title: {
34
41
  type: String,
35
42
  required: true,
43
+ trim: true,
44
+ index: true,
36
45
  },
37
46
  client: {
38
47
  type: mongoose_1.default.Schema.Types.ObjectId,
39
48
  ref: "client",
40
49
  required: true,
50
+ index: true,
51
+ },
52
+ organizationId: {
53
+ type: mongoose_1.default.Schema.Types.ObjectId,
54
+ ref: "organization",
55
+ index: true,
41
56
  },
42
57
  screenshot: {
43
58
  type: String,
44
59
  default: null,
60
+ trim: true,
45
61
  },
46
62
  dataPoints: {
47
63
  type: LandingPageDataSchema,
48
64
  default: {},
49
65
  },
66
+ isActive: {
67
+ type: Boolean,
68
+ default: true,
69
+ index: true,
70
+ }
50
71
  }, {
51
72
  timestamps: true,
52
73
  });
74
+ // Compound indexes for common query patterns
75
+ LandingPagesSchema.index({ client: 1, title: 1 }, { unique: true });
76
+ LandingPagesSchema.index({ client: 1, isActive: 1 });
77
+ LandingPagesSchema.index({ organizationId: 1, client: 1 });
78
+ LandingPagesSchema.index({ organizationId: 1, title: 1 });
79
+ LandingPagesSchema.index({ client: 1, 'dataPoints.conversionRate': -1 });
80
+ // Text index for full-text search
81
+ LandingPagesSchema.index({ title: 'text' });
53
82
  const LandingPages = (0, mongoose_1.model)("LandingPages", LandingPagesSchema);
54
83
  exports.default = LandingPages;
@@ -24,7 +24,7 @@
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import mongoose, { Document } from "mongoose";
26
26
  export interface INewIdeas extends Document {
27
- organisationId?: string;
27
+ organizationId?: mongoose.Schema.Types.ObjectId;
28
28
  ideaName: string;
29
29
  client?: mongoose.Schema.Types.ObjectId;
30
30
  hypothesis?: mongoose.Schema.Types.ObjectId;
@@ -25,8 +25,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const mongoose_1 = __importStar(require("mongoose"));
27
27
  const NewIdeasSchema = new mongoose_1.Schema({
28
- organisationId: {
29
- type: String,
28
+ organizationId: {
29
+ type: mongoose_1.default.Schema.Types.ObjectId,
30
+ ref: "organization",
30
31
  default: null,
31
32
  },
32
33
  ideaName: {
@@ -31,6 +31,7 @@ export interface INotification extends Document {
31
31
  archive?: boolean;
32
32
  module?: string;
33
33
  moduleData?: string;
34
+ organizationId?: mongoose.Schema.Types.ObjectId;
34
35
  }
35
36
  declare const Notification: mongoose.Model<INotification, {}, {}, {}, mongoose.Document<unknown, {}, INotification> & INotification & {
36
37
  _id: mongoose.Types.ObjectId;
@@ -1,7 +1,35 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const mongoose_1 = require("mongoose");
26
+ const mongoose_1 = __importStar(require("mongoose"));
4
27
  const NotificationSchema = new mongoose_1.Schema({
28
+ organizationId: {
29
+ type: mongoose_1.default.Schema.Types.ObjectId,
30
+ ref: "organization",
31
+ default: null,
32
+ },
5
33
  title: {
6
34
  type: String,
7
35
  },
@@ -23,36 +23,25 @@
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import mongoose, { Document } from "mongoose";
26
- export interface IPageTargeting extends Document {
27
- condition: string;
28
- routes: mongoose.Schema.Types.Mixed;
29
- }
30
- export interface IAudienceTargeting extends Document {
31
- javascript: string;
32
- }
33
- export interface IVariants extends Document {
26
+ export interface IOrganization extends Document {
34
27
  name: string;
35
- javascript?: string;
36
- css?: string;
37
- traffic_allocation?: string;
38
- slug?: string;
39
- }
40
- export interface IClientExperiment extends Document {
41
- organisationId?: string;
42
- client?: mongoose.Schema.Types.ObjectId;
43
- viewId?: string;
44
- javascript: string;
45
- css: string;
46
- name?: string;
47
- status?: string;
48
- experimentUrl: string;
49
- pageTargeting: IPageTargeting;
50
- audienceTargeting: IAudienceTargeting;
51
- variants: IVariants;
52
- createdAt?: Date;
53
- updatedAt?: Date;
28
+ description: string;
29
+ adminEmail: string;
30
+ adminContact: string;
31
+ createdBy: mongoose.Schema.Types.ObjectId;
32
+ address: string;
33
+ city: string;
34
+ state: string;
35
+ zip: string;
36
+ country: string;
37
+ phone: string;
38
+ logo: string;
39
+ website: string;
40
+ createdAt: Date;
41
+ updatedAt: Date;
42
+ isActive: boolean;
54
43
  }
55
- declare const ClientExperiment: mongoose.Model<IClientExperiment, {}, {}, {}, mongoose.Document<unknown, {}, IClientExperiment> & IClientExperiment & {
44
+ declare const Organization: mongoose.Model<IOrganization, {}, {}, {}, mongoose.Document<unknown, {}, IOrganization> & IOrganization & {
56
45
  _id: mongoose.Types.ObjectId;
57
46
  }, any>;
58
- export default ClientExperiment;
47
+ export default Organization;
@@ -24,85 +24,67 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const mongoose_1 = __importStar(require("mongoose"));
27
- const VariationsSchema = new mongoose_1.Schema({
27
+ const OrganizationSchema = new mongoose_1.Schema({
28
28
  name: {
29
29
  type: String,
30
+ required: true,
31
+ unique: true,
30
32
  },
31
- css_code: {
33
+ description: {
32
34
  type: String,
35
+ required: true,
33
36
  },
34
- baseline: {
35
- type: Boolean,
36
- },
37
- traffic_allocation: {
38
- type: Number,
39
- },
40
- metadata_1: {
41
- type: mongoose_1.default.Schema.Types.Mixed,
42
- },
43
- metadata_2: {
44
- type: mongoose_1.default.Schema.Types.Mixed,
45
- },
46
- metadata_3: {
47
- type: mongoose_1.default.Schema.Types.Mixed,
48
- },
49
- js: {
37
+ adminEmail: {
50
38
  type: String,
39
+ required: true,
51
40
  },
52
- reset_js: {
41
+ adminContact: {
53
42
  type: String,
43
+ required: true,
54
44
  },
55
- css: {
56
- type: String,
45
+ createdBy: {
46
+ type: mongoose_1.default.Schema.Types.ObjectId,
47
+ ref: "user",
57
48
  },
58
- changesets: {
49
+ address: {
59
50
  type: String,
51
+ required: true,
60
52
  },
61
- });
62
- const ExperimentsSchema = new mongoose_1.Schema({
63
- status: {
53
+ city: {
64
54
  type: String,
55
+ required: true,
65
56
  },
66
- name: {
57
+ state: {
67
58
  type: String,
68
59
  required: true,
69
60
  },
70
- traffic_allocation: {
71
- type: Number,
72
- default: 100,
73
- },
74
- audiences_match_type: {
61
+ zip: {
75
62
  type: String,
76
- default: "all",
77
- },
78
- metadata_1: {
79
- type: mongoose_1.default.Schema.Types.Mixed,
80
- },
81
- metadata_2: {
82
- type: mongoose_1.default.Schema.Types.Mixed,
83
- },
84
- metadata_3: {
85
- type: mongoose_1.default.Schema.Types.Mixed,
86
- },
87
- integrations_run_mode: {
88
- type: mongoose_1.default.Schema.Types.Mixed,
63
+ required: true,
89
64
  },
90
- js: {
65
+ country: {
91
66
  type: String,
67
+ required: true,
92
68
  },
93
- reset_js: {
69
+ phone: {
94
70
  type: String,
71
+ required: true,
95
72
  },
96
- csscode: {
73
+ logo: {
97
74
  type: String,
75
+ required: true,
98
76
  },
99
- audiences: {
100
- type: mongoose_1.default.Schema.Types.Array,
77
+ website: {
78
+ type: String,
79
+ required: true,
101
80
  },
102
- variations: VariationsSchema,
103
- environments: {
104
- type: mongoose_1.default.Schema.Types.Array,
81
+ isActive: {
82
+ type: Boolean,
83
+ default: true,
105
84
  },
85
+ }, {
86
+ timestamps: true
106
87
  });
107
- const Experiments = (0, mongoose_1.model)("experiments", ExperimentsSchema);
108
- exports.default = Experiments;
88
+ const Organization = (0, mongoose_1.model)("organization", OrganizationSchema);
89
+ OrganizationSchema.index({ name: 1, isActive: 1 });
90
+ exports.default = Organization;
@@ -31,13 +31,15 @@ export interface IUrltargetings extends Document {
31
31
  export interface IPage extends Document {
32
32
  name: string;
33
33
  client?: mongoose.Schema.Types.ObjectId;
34
+ organizationId?: mongoose.Schema.Types.ObjectId;
34
35
  trigger: string;
35
36
  trigger_js: string;
36
37
  api_name: string;
37
38
  poll_on_rules: Boolean;
38
39
  deactivation_mode: string;
39
40
  rules_js: string;
40
- urltargetings: IUrltargetings;
41
+ urltargetings: IUrltargetings[];
42
+ isActive?: boolean;
41
43
  }
42
44
  declare const Page: mongoose.Model<IPage, {}, {}, {}, mongoose.Document<unknown, {}, IPage> & IPage & {
43
45
  _id: mongoose.Types.ObjectId;
@@ -32,45 +32,97 @@ mongoose_1.default.plugin(mongoose_slug_updater_1.default);
32
32
  const UrltargetingsSchema = new mongoose_1.Schema({
33
33
  type: {
34
34
  type: String,
35
+ required: true,
36
+ trim: true,
35
37
  },
36
38
  url: {
37
39
  type: String,
40
+ required: true,
41
+ trim: true,
38
42
  },
39
43
  url_type: {
40
44
  type: String,
45
+ required: true,
46
+ trim: true,
41
47
  },
42
48
  });
43
49
  const PageSchema = new mongoose_1.Schema({
44
50
  name: {
45
51
  type: String,
46
52
  required: true,
53
+ trim: true,
54
+ index: true,
47
55
  },
48
56
  trigger: {
49
57
  type: String,
50
- default: "direct"
58
+ default: "direct",
59
+ trim: true,
60
+ index: true,
61
+ },
62
+ organizationId: {
63
+ type: mongoose_1.default.Schema.Types.ObjectId,
64
+ ref: "organization",
65
+ default: null,
66
+ index: true,
51
67
  },
52
68
  client: {
53
69
  type: mongoose_1.default.Schema.Types.ObjectId,
54
70
  ref: "client",
71
+ required: true,
72
+ index: true,
55
73
  },
56
74
  trigger_js: {
57
75
  type: String,
58
- default: ""
76
+ default: "",
77
+ trim: true,
78
+ },
79
+ api_name: {
80
+ type: String,
81
+ slug: ["name"],
82
+ slugPaddingSize: 4,
83
+ unique: true,
84
+ trim: true,
59
85
  },
60
- api_name: { type: String, slug: ["name"], slugPaddingSize: 4, unique: true },
61
86
  poll_on_rules: {
62
87
  type: Boolean,
63
88
  default: false,
89
+ index: true,
64
90
  },
65
91
  deactivation_mode: {
66
92
  type: String,
67
93
  default: "reset",
94
+ trim: true,
68
95
  },
69
96
  rules_js: {
70
97
  type: String,
71
- default: "return true"
98
+ default: "return true",
99
+ trim: true,
72
100
  },
73
101
  urltargetings: [UrltargetingsSchema],
102
+ isActive: {
103
+ type: Boolean,
104
+ default: true,
105
+ index: true,
106
+ }
107
+ }, {
108
+ timestamps: true
74
109
  });
110
+ // Compound indexes for common query patterns
111
+ PageSchema.index({ client: 1, name: 1 }, { unique: true });
112
+ PageSchema.index({ client: 1, isActive: 1 });
113
+ PageSchema.index({ organizationId: 1, client: 1 });
114
+ PageSchema.index({ organizationId: 1, name: 1 });
115
+ // Text index for full-text search
116
+ // PageSchema.index({
117
+ // name: 'text',
118
+ // trigger_js: 'text',
119
+ // rules_js: 'text'
120
+ // }, {
121
+ // weights: {
122
+ // name: 10,
123
+ // trigger_js: 5,
124
+ // rules_js: 5
125
+ // }
126
+ // });
75
127
  const Page = (0, mongoose_1.model)("page", PageSchema);
76
128
  exports.default = Page;
@@ -26,6 +26,9 @@ import mongoose, { Document } from "mongoose";
26
26
  export interface IPageElement extends Document {
27
27
  name: string;
28
28
  slug?: string;
29
+ organizationId?: mongoose.Schema.Types.ObjectId;
30
+ client?: mongoose.Schema.Types.ObjectId;
31
+ isActive?: boolean;
29
32
  createdAt?: Date;
30
33
  updatedAt?: Date;
31
34
  }
@@ -1,22 +1,74 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
2
28
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const mongoose_1 = require("mongoose");
29
+ const mongoose_1 = __importStar(require("mongoose"));
30
+ const mongoose_slug_updater_1 = __importDefault(require("mongoose-slug-updater"));
31
+ mongoose_1.default.plugin(mongoose_slug_updater_1.default);
4
32
  const PageElementSchema = new mongoose_1.Schema({
5
33
  name: {
6
34
  type: String,
7
35
  required: true,
36
+ trim: true,
37
+ index: true,
8
38
  },
9
39
  slug: {
10
40
  type: String,
41
+ slug: ["name"],
42
+ slugPaddingSize: 4,
43
+ unique: true,
44
+ trim: true,
11
45
  },
12
- createdAt: {
13
- type: Date,
14
- default: new Date(),
46
+ organizationId: {
47
+ type: mongoose_1.default.Schema.Types.ObjectId,
48
+ ref: "organization",
49
+ index: true,
50
+ default: null,
15
51
  },
16
- updatedAt: {
17
- type: Date,
18
- default: new Date(),
52
+ client: {
53
+ type: mongoose_1.default.Schema.Types.ObjectId,
54
+ ref: "client",
55
+ required: true,
56
+ index: true,
19
57
  },
58
+ isActive: {
59
+ type: Boolean,
60
+ default: true,
61
+ index: true,
62
+ }
63
+ }, {
64
+ timestamps: true
20
65
  });
66
+ // Compound indexes for common query patterns
67
+ PageElementSchema.index({ client: 1, name: 1 }, { unique: true });
68
+ PageElementSchema.index({ client: 1, isActive: 1 });
69
+ PageElementSchema.index({ organizationId: 1, client: 1 });
70
+ PageElementSchema.index({ organizationId: 1, name: 1 });
71
+ // Text index for full-text search
72
+ PageElementSchema.index({ name: 'text' });
21
73
  const PageElement = (0, mongoose_1.model)("pageelement", PageElementSchema);
22
74
  exports.default = PageElement;