codebase-models 1.0.0 → 1.0.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.
@@ -24,15 +24,102 @@ 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 TestSchema = new mongoose_1.Schema({
27
+ const VariationsSchema = new mongoose_1.Schema({
28
28
  name: {
29
29
  type: String,
30
- required: true,
31
30
  },
31
+ css_code: {
32
+ type: String,
33
+ },
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
+ jscode: {
50
+ type: String,
51
+ },
52
+ reset_js: {
53
+ type: String,
54
+ },
55
+ csscode: {
56
+ type: String,
57
+ },
58
+ changesets: {
59
+ type: String,
60
+ default: "[]",
61
+ },
62
+ });
63
+ const TestSchema = new mongoose_1.Schema({
32
64
  organisationId: {
33
65
  type: String,
34
66
  default: null,
35
67
  },
68
+ status: {
69
+ type: String,
70
+ default: "draft",
71
+ enum: ["live", "draft", "ended", "paused", "preview"], // running is live
72
+ },
73
+ name: {
74
+ type: String,
75
+ required: true,
76
+ },
77
+ traffic_allocation: {
78
+ type: Number,
79
+ default: 100,
80
+ },
81
+ audiences_match_type: {
82
+ type: String,
83
+ default: "all",
84
+ },
85
+ metadata_1: {
86
+ type: mongoose_1.default.Schema.Types.Mixed,
87
+ },
88
+ metadata_2: {
89
+ type: mongoose_1.default.Schema.Types.Mixed,
90
+ },
91
+ metadata_3: {
92
+ type: mongoose_1.default.Schema.Types.Mixed,
93
+ },
94
+ integrations_run_mode: {
95
+ type: mongoose_1.default.Schema.Types.Mixed,
96
+ },
97
+ jscode: {
98
+ type: String,
99
+ default: "",
100
+ },
101
+ reset_js: {
102
+ type: String,
103
+ },
104
+ csscode: {
105
+ type: String,
106
+ },
107
+ audiences: {
108
+ type: [mongoose_1.default.Schema.Types.ObjectId],
109
+ ref: "audience",
110
+ default: [],
111
+ },
112
+ pages: {
113
+ type: [mongoose_1.default.Schema.Types.ObjectId],
114
+ ref: "page",
115
+ default: [],
116
+ },
117
+ variations: [VariationsSchema],
118
+ environments: {
119
+ type: [mongoose_1.default.Schema.Types.ObjectId],
120
+ ref: "environment",
121
+ default: [],
122
+ },
36
123
  pageelement: {
37
124
  type: [mongoose_1.default.Schema.Types.ObjectId],
38
125
  ref: "pageelement",
@@ -47,7 +134,7 @@ const TestSchema = new mongoose_1.Schema({
47
134
  },
48
135
  platform: {
49
136
  type: String,
50
- default: "UA",
137
+ default: "BQ",
51
138
  },
52
139
  viewId: {
53
140
  type: String,
@@ -81,10 +168,12 @@ const TestSchema = new mongoose_1.Schema({
81
168
  default: null,
82
169
  },
83
170
  // Action , Posibility, Hypothesis
171
+ // Check if we need anymore
84
172
  urltargeting: {
85
173
  type: [],
86
174
  default: [],
87
175
  },
176
+ // Check if we need anymore
88
177
  pageaudience: {
89
178
  type: String,
90
179
  default: null,
@@ -109,13 +198,6 @@ const TestSchema = new mongoose_1.Schema({
109
198
  type: String,
110
199
  default: "",
111
200
  },
112
- csscode: {
113
- type: String,
114
- },
115
- jscode: {
116
- type: String,
117
- default: "",
118
- },
119
201
  testid: {
120
202
  type: String,
121
203
  default: null,
@@ -162,11 +244,6 @@ const TestSchema = new mongoose_1.Schema({
162
244
  type: Number,
163
245
  default: null,
164
246
  },
165
- status: {
166
- type: String,
167
- default: "draft",
168
- enum: ["live", "draft", "ended"],
169
- },
170
247
  livedate: {
171
248
  type: Date,
172
249
  default: null,
package/index.ts CHANGED
@@ -7,6 +7,7 @@ import Report from "./src/models/Report";
7
7
  import Test from "./src/models/Test";
8
8
  import TestSequentialValue from "./src/models/TestSequentialValue";
9
9
  import User from "./src/models/User";
10
+ import AppEvent from "./src/models/AppEvent";
10
11
  import Announcement from "./src/models/Announcement";
11
12
  import ClientAdditionalRevenue from "./src/models/ClientAdditionalRevenue";
12
13
  import ClientLearning from "./src/models/ClientLearning";
@@ -17,6 +18,7 @@ import ClientRetention from "./src/models/ClientRetention";
17
18
  import ClientStrategy from "./src/models/ClientStrategy";
18
19
  import ClientSurvey from "./src/models/ClientSurvay";
19
20
  import CVRReport from "./src/models/CVRReport";
21
+ import Experiments from "./src/models/Experiments";
20
22
  import Faq from "./src/models/Faqs";
21
23
  import Feedback from "./src/models/Feedback";
22
24
  import Goal from "./src/models/Goal";
@@ -25,6 +27,7 @@ import HypothesisSheet from "./src/models/HypothesisSheet";
25
27
  import LandingPages from "./src/models/LandingPages";
26
28
  import NewIdeas from "./src/models/NewIdeas";
27
29
  import Notification from "./src/models/Notification";
30
+ import Page from "./src/models/Page";
28
31
  import PageElement from "./src/models/PageElement";
29
32
  import PageTestType from "./src/models/PageTestType";
30
33
  import Portfolio from "./src/models/Portfolio";
@@ -39,6 +42,10 @@ import Tag from "./src/models/Tag";
39
42
  import Temp from "./src/models/Temp";
40
43
  import Tier from "./src/models/Tier";
41
44
  import Trigger from "./src/models/Trigger";
45
+ import ClientScript from "./src/models/ClientScript";
46
+ import ClientExperiment from "./src/models/ClientExperiment";
47
+ import Audience from "./src/models/Audience";
48
+ import Environment from "./src/models/Environment";
42
49
 
43
50
  async function seedRoles() {
44
51
  const checkRoles = await Role.countDocuments();
@@ -62,6 +69,7 @@ async function seedRoles() {
62
69
  ]);
63
70
  })
64
71
  );
72
+ console.log("Roles seeded successfully");
65
73
  }
66
74
  }
67
75
 
@@ -70,13 +78,18 @@ export async function connect(
70
78
  options?: mongoose.ConnectOptions | undefined
71
79
  ): Promise<typeof mongoose> {
72
80
  if (uri) {
73
- console.log("Connecting to the database on URI: ", uri);
74
- const mongooseConnection = await mongoose.connect(uri, options);
75
- if (mongooseConnection.connection.readyState === 1) {
76
- await seedRoles();
77
- console.log("Roles seeded successfully");
81
+ if (mongoose.connection.readyState === 1) {
82
+ // Already connected
83
+ console.log("Already connected to the database");
84
+ return mongoose;
85
+ } else {
86
+ console.log("Connecting to the database on URI: ", uri);
87
+ const mongooseConnection = await mongoose.connect(uri, options);
88
+ if (mongooseConnection.connection.readyState === 1) {
89
+ await seedRoles();
90
+ }
91
+ return mongooseConnection;
78
92
  }
79
- return mongooseConnection;
80
93
  }
81
94
  throw new Error("URI is required to connect to the database");
82
95
  }
@@ -89,6 +102,7 @@ export {
89
102
  Test,
90
103
  TestSequentialValue,
91
104
  User,
105
+ AppEvent,
92
106
  Announcement,
93
107
  ClientAdditionalRevenue,
94
108
  ClientLearning,
@@ -99,6 +113,7 @@ export {
99
113
  ClientStrategy,
100
114
  ClientSurvey,
101
115
  CVRReport,
116
+ Experiments,
102
117
  Faq,
103
118
  Feedback,
104
119
  Goal,
@@ -107,6 +122,7 @@ export {
107
122
  LandingPages,
108
123
  NewIdeas,
109
124
  Notification,
125
+ Page,
110
126
  PageElement,
111
127
  PageTestType,
112
128
  Portfolio,
@@ -121,4 +137,8 @@ export {
121
137
  Temp,
122
138
  Tier,
123
139
  Trigger,
140
+ ClientScript,
141
+ ClientExperiment,
142
+ Audience,
143
+ Environment,
124
144
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebase-models",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Common models for codebase",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -0,0 +1,81 @@
1
+ import mongoose, { Document, Schema, model } from "mongoose";
2
+
3
+ export interface IPerformanceMetrics extends Document {
4
+ pageLoadTime?: string;
5
+ serverResponseTime?: string;
6
+ }
7
+ export interface IEngagementMetrics extends Document {
8
+ bounceRate?: string;
9
+ sessionDuration?: string;
10
+ returnVisits?: string;
11
+ }
12
+ export interface IBrowser extends Document {
13
+ browserName: string;
14
+ browserVersion?: string;
15
+ }
16
+
17
+ export interface IOs extends Document {
18
+ osName: string;
19
+ osVersion?: string;
20
+ }
21
+
22
+ export interface IAppEvent extends Document {
23
+ clientId?: mongoose.Schema.Types.ObjectId;
24
+ variant?: string;
25
+ viewId?: boolean;
26
+ browser?: IBrowser;
27
+ os?: IOs;
28
+ eventName?: string;
29
+ performanceMetrics?: IPerformanceMetrics;
30
+ engagementMetrics?: IEngagementMetrics;
31
+ }
32
+
33
+ const PerformanceMetricsSchema: Schema = new Schema<IBrowser>({
34
+ browserName: mongoose.Schema.Types.String,
35
+ browserVersion: mongoose.Schema.Types.String,
36
+ });
37
+
38
+ const EngagementMetricsSchema: Schema = new Schema<IBrowser>({
39
+ browserName: mongoose.Schema.Types.String,
40
+ browserVersion: mongoose.Schema.Types.String,
41
+ });
42
+
43
+ const browserSchema: Schema = new Schema<IBrowser>({
44
+ browserName: mongoose.Schema.Types.String,
45
+ browserVersion: mongoose.Schema.Types.String,
46
+ });
47
+
48
+ const osSchema: Schema = new Schema<IOs>({
49
+ osName: mongoose.Schema.Types.String,
50
+ osVersion: mongoose.Schema.Types.String,
51
+ });
52
+
53
+ const AppEventsSchema = new Schema<IAppEvent>(
54
+ {
55
+ clientId: {
56
+ type: mongoose.Schema.Types.ObjectId,
57
+ ref: "client",
58
+ required: true,
59
+ },
60
+ variant: {
61
+ type: mongoose.Schema.Types.String,
62
+ },
63
+ viewId: {
64
+ type: String,
65
+ },
66
+ eventName: {
67
+ type: String,
68
+ },
69
+ performanceMetrics: PerformanceMetricsSchema,
70
+ engagementMetrics: EngagementMetricsSchema,
71
+ browser: browserSchema,
72
+ os: osSchema,
73
+ },
74
+ {
75
+ timestamps: true,
76
+ }
77
+ );
78
+
79
+ const AppEvent = model<IAppEvent>("appevent", AppEventsSchema);
80
+
81
+ export default AppEvent;
@@ -0,0 +1,27 @@
1
+ import mongoose, { Document, Schema, model } from "mongoose";
2
+
3
+ export interface IAudience extends Document {
4
+ name: string;
5
+ rules_js?: string;
6
+ client: mongoose.Schema.Types.ObjectId;
7
+ }
8
+
9
+ const AudienceSchema = new Schema<IAudience>({
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ },
14
+ rules_js: {
15
+ type: String,
16
+ },
17
+ client: {
18
+ type: mongoose.Schema.Types.ObjectId,
19
+ ref: "client",
20
+ }
21
+ }, {
22
+ timestamps: true,
23
+ });
24
+
25
+ const Audience = model<IAudience>("audience", AudienceSchema);
26
+
27
+ export default Audience;
@@ -0,0 +1,113 @@
1
+ import mongoose, { Document, Schema, model } from "mongoose";
2
+
3
+ export interface IPageTargeting extends Document {
4
+ condition: string;
5
+ routes: mongoose.Schema.Types.Mixed;
6
+ }
7
+
8
+ export interface IAudienceTargeting extends Document {
9
+ javascript: string;
10
+ }
11
+
12
+ export interface IVariants extends Document {
13
+ name: string;
14
+ javascript?: string;
15
+ css?: string;
16
+ traffic_allocation?: string;
17
+ slug?: string;
18
+ }
19
+
20
+ export interface IClientExperiment extends Document {
21
+ organisationId?: string;
22
+ client?: mongoose.Schema.Types.ObjectId;
23
+ viewId?: string;
24
+ javascript: string;
25
+ css: string;
26
+ name?: string;
27
+ status?: string;
28
+ experimentUrl: string;
29
+ pageTargeting: IPageTargeting;
30
+ audienceTargeting: IAudienceTargeting;
31
+ variants: IVariants;
32
+ createdAt?: Date;
33
+ updatedAt?: Date;
34
+ }
35
+
36
+ const PageTargetingSchema = new Schema<IPageTargeting>({
37
+ condition: {
38
+ type: String,
39
+ default: null,
40
+ },
41
+ routes: {
42
+ type: mongoose.Schema.Types.Mixed,
43
+ },
44
+ });
45
+
46
+ const AudienceTargetingSchema = new Schema<IAudienceTargeting>({
47
+ javascript: {
48
+ type: String,
49
+ default: "return true",
50
+ },
51
+ });
52
+
53
+ const VariantsSchema = new Schema<IVariants>({
54
+ name: {
55
+ type: String,
56
+ default: null,
57
+ },
58
+ traffic_allocation: {
59
+ type: Number,
60
+ default: null,
61
+ },
62
+ javascript: {
63
+ type: String,
64
+ default: null,
65
+ },
66
+ css: {
67
+ type: String,
68
+ default: null,
69
+ },
70
+ slug: {
71
+ type: String,
72
+ default: null,
73
+ },
74
+ });
75
+
76
+ const ClientExperimentSchema = new Schema<IClientExperiment>(
77
+ {
78
+ organisationId: {
79
+ type: String,
80
+ default: null,
81
+ },
82
+ name: String,
83
+ status: {
84
+ type: String,
85
+ default: "draft",
86
+ },
87
+ experimentUrl: String,
88
+ client: {
89
+ type: mongoose.Schema.Types.ObjectId,
90
+ ref: "client",
91
+ },
92
+ viewId: {
93
+ type: String,
94
+ },
95
+ pageTargeting: [PageTargetingSchema],
96
+ audienceTargeting: AudienceTargetingSchema,
97
+ variants: [VariantsSchema],
98
+ },
99
+ {
100
+ timestamps: true,
101
+ }
102
+ );
103
+
104
+ ClientExperimentSchema.index({
105
+ client: 1,
106
+ });
107
+
108
+ const ClientExperiment = model<IClientExperiment>(
109
+ "clientexperiment",
110
+ ClientExperimentSchema
111
+ );
112
+
113
+ export default ClientExperiment;
@@ -0,0 +1,164 @@
1
+ import mongoose, { Document, Schema, model } from "mongoose";
2
+
3
+ export interface IClientScriptSchema extends Document {
4
+ scriptUrl: string;
5
+ viewId: string;
6
+ }
7
+
8
+ export interface IClientScript extends Document {
9
+ organisationId?: string;
10
+ client?: mongoose.Schema.Types.ObjectId;
11
+ viewId?: string;
12
+ clientScriptURL: string;
13
+ jquery_include: string;
14
+ debug: Boolean;
15
+ restrict_debug: Boolean;
16
+ adhere_dnt: Boolean;
17
+ max_cookie_lifetime: Number;
18
+ activation_mode: string;
19
+ use_antiflicker: Boolean;
20
+ snippet_revision: Number;
21
+ rules: string;
22
+ rules_tracking: string;
23
+ tracker_url: string;
24
+ asset_url: string;
25
+ metadata_key_exp_1: mongoose.Schema.Types.Mixed;
26
+ metadata_key_exp_2: mongoose.Schema.Types.Mixed;
27
+ metadata_key_exp_3: mongoose.Schema.Types.Mixed;
28
+ metadata_key_var_1: mongoose.Schema.Types.Mixed;
29
+ metadata_key_var_2: mongoose.Schema.Types.Mixed;
30
+ metadata_key_var_3: mongoose.Schema.Types.Mixed;
31
+ cookie_domain: string;
32
+ snippet_version: Number;
33
+ storage: string;
34
+ run_only_on_reinit: Boolean;
35
+ allow_in_iframes: Boolean;
36
+ visual_editor_version: Number;
37
+ jscode: string;
38
+ csscode: string;
39
+ is_spa: Boolean;
40
+ }
41
+
42
+ const ClientScriptSchema = new Schema<IClientScript>(
43
+ {
44
+ organisationId: {
45
+ type: String,
46
+ default: null,
47
+ },
48
+ client: {
49
+ type: mongoose.Schema.Types.ObjectId,
50
+ ref: "client",
51
+ },
52
+ viewId: {
53
+ type: String,
54
+ },
55
+ clientScriptURL: {
56
+ type: String,
57
+ },
58
+ jquery_include: {
59
+ type: String,
60
+ default: "false",
61
+ },
62
+ debug: {
63
+ type: Boolean,
64
+ default: false,
65
+ },
66
+ restrict_debug: {
67
+ type: Boolean,
68
+ default: false,
69
+ },
70
+ adhere_dnt: {
71
+ type: Boolean,
72
+ default: false,
73
+ },
74
+ max_cookie_lifetime: {
75
+ type: Number,
76
+ },
77
+ activation_mode: {
78
+ type: String,
79
+ },
80
+ use_antiflicker: {
81
+ type: Boolean,
82
+ default: false,
83
+ },
84
+ snippet_revision: {
85
+ type: Number,
86
+ default: 1,
87
+ },
88
+ rules: {
89
+ type: String,
90
+ default: "return true;"
91
+ },
92
+ rules_tracking: {
93
+ type: String,
94
+ default: "return true;"
95
+ },
96
+ tracker_url: {
97
+ type: String,
98
+ },
99
+ asset_url: {
100
+ type: String,
101
+ },
102
+ metadata_key_exp_1: {
103
+ type: mongoose.Schema.Types.Mixed,
104
+ },
105
+ metadata_key_exp_2: {
106
+ type: mongoose.Schema.Types.Mixed,
107
+ },
108
+ metadata_key_exp_3: {
109
+ type: mongoose.Schema.Types.Mixed,
110
+ },
111
+ metadata_key_var_1: {
112
+ type: mongoose.Schema.Types.Mixed,
113
+ },
114
+ metadata_key_var_2: {
115
+ type: mongoose.Schema.Types.Mixed,
116
+ },
117
+ metadata_key_var_3: {
118
+ type: mongoose.Schema.Types.Mixed,
119
+ },
120
+ cookie_domain: {
121
+ type: String,
122
+ },
123
+ snippet_version: {
124
+ type: Number,
125
+ },
126
+ storage: {
127
+ type: String,
128
+ default: "default",
129
+ },
130
+ run_only_on_reinit: {
131
+ type: Boolean,
132
+ default: false,
133
+ },
134
+ allow_in_iframes: {
135
+ type: Boolean,
136
+ default: false,
137
+ },
138
+ visual_editor_version: {
139
+ type: Number,
140
+ },
141
+ jscode: {
142
+ type: String,
143
+ },
144
+ csscode: {
145
+ type: String,
146
+ },
147
+ is_spa: {
148
+ type: Boolean,
149
+ default: false,
150
+ },
151
+ },
152
+ {
153
+ timestamps: true,
154
+ }
155
+ );
156
+
157
+ ClientScriptSchema.index({
158
+ client: 1,
159
+ viewId: 1,
160
+ });
161
+
162
+ const ClientScript = model<IClientScript>("clientscript", ClientScriptSchema);
163
+
164
+ export default ClientScript;
@@ -0,0 +1,29 @@
1
+ import mongoose, { Document, Schema, model } from "mongoose";
2
+
3
+ export interface IEnvironment extends Document {
4
+ name: string;
5
+ rules_js?: string;
6
+ client?: mongoose.Schema.Types.ObjectId;
7
+ }
8
+
9
+ const EnvironmentSchema = new Schema<IEnvironment>({
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ default: 'Default'
14
+ },
15
+ client: {
16
+ type: mongoose.Schema.Types.ObjectId,
17
+ ref: "client",
18
+ },
19
+ rules_js: {
20
+ type: String,
21
+ default: "return true"
22
+ },
23
+ },{
24
+ timestamps: true
25
+ });
26
+
27
+ const Environment = model<IEnvironment>("environment", EnvironmentSchema);
28
+
29
+ export default Environment;