codebase-models 2.1.19 → 2.1.21
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/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/src/models/CronConfig.d.ts +41 -0
- package/dist/src/models/CronConfig.js +102 -0
- package/dist/src/models/Test.d.ts +1 -0
- package/dist/src/models/Test.js +6 -2
- package/dist/src/models/TestTimeline.js +1 -1
- package/dist/src/models/User.js +0 -1
- package/index.ts +3 -1
- package/package.json +1 -1
- package/src/models/CronConfig.ts +84 -0
- package/src/models/Test.ts +7 -3
- package/src/models/TestTimeline.ts +1 -1
- package/src/models/User.ts +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -75,5 +75,6 @@ import CustomQuery from "./src/models/CustomQuery";
|
|
|
75
75
|
import { generateRandomIID } from "./src/constant";
|
|
76
76
|
import TestTimeline from "./src/models/TestTimeline";
|
|
77
77
|
import CronData from "./src/models/CronData";
|
|
78
|
+
import CronConfig from "./src/models/CronConfig";
|
|
78
79
|
export declare function connect(uri: string, options?: mongoose.ConnectOptions | undefined): Promise<typeof mongoose>;
|
|
79
|
-
export { generateRandomIID, Client, ClientReportsTemp, QueryLog, Report, Test, TestSequentialValue, User, AppEvent, Announcement, ClientAdditionalRevenue, ClientLearning, ClientLinks, ClientNextStep, ClientNote, ClientRetention, ClientStrategy, ClientSurvey, CVRReport, Faq, Feedback, Goal, Hypothesis, HypothesisSheet, LandingPages, NewIdeas, Notification, Page, PageElement, PageTestType, Portfolio, ReadNotification, Role, CustomQuery, SavedSegment, TestTimeline, Segment, SegmentCombination, Snippet, StageInCustomerJourney, Tag, Temp, Tier, Trigger, ClientScript, Audience, Environment, Organization, PrecalculationFilters, BqPreCompiledData, CronData,
|
|
80
|
+
export { generateRandomIID, Client, ClientReportsTemp, QueryLog, Report, Test, TestSequentialValue, User, AppEvent, Announcement, ClientAdditionalRevenue, ClientLearning, ClientLinks, ClientNextStep, ClientNote, ClientRetention, ClientStrategy, ClientSurvey, CVRReport, Faq, Feedback, Goal, Hypothesis, HypothesisSheet, LandingPages, NewIdeas, Notification, Page, PageElement, PageTestType, Portfolio, ReadNotification, Role, CustomQuery, SavedSegment, TestTimeline, Segment, SegmentCombination, Snippet, StageInCustomerJourney, Tag, Temp, Tier, Trigger, ClientScript, Audience, Environment, Organization, PrecalculationFilters, BqPreCompiledData, CronData, CronConfig, UserPermission };
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.PrecalculationFilters = exports.Organization = exports.Environment = exports.Audience = exports.ClientScript = exports.Trigger = exports.Tier = exports.Temp = exports.Tag = exports.StageInCustomerJourney = exports.Snippet = exports.SegmentCombination = exports.Segment = exports.TestTimeline = exports.SavedSegment = exports.CustomQuery = exports.Role = exports.ReadNotification = exports.Portfolio = exports.PageTestType = exports.PageElement = exports.Page = exports.Notification = exports.NewIdeas = exports.LandingPages = exports.HypothesisSheet = exports.Hypothesis = exports.Goal = exports.Feedback = exports.Faq = exports.CVRReport = exports.ClientSurvey = exports.ClientStrategy = exports.ClientRetention = exports.ClientNote = exports.ClientNextStep = exports.ClientLinks = exports.ClientLearning = exports.ClientAdditionalRevenue = exports.Announcement = exports.AppEvent = exports.User = exports.TestSequentialValue = exports.Test = exports.Report = exports.QueryLog = exports.ClientReportsTemp = exports.Client = exports.generateRandomIID = exports.connect = void 0;
|
|
16
|
-
exports.UserPermission = exports.CronData = exports.BqPreCompiledData = void 0;
|
|
16
|
+
exports.UserPermission = exports.CronConfig = exports.CronData = exports.BqPreCompiledData = void 0;
|
|
17
17
|
const mongoose_1 = __importDefault(require("mongoose"));
|
|
18
18
|
const Client_1 = __importDefault(require("./src/models/Client"));
|
|
19
19
|
exports.Client = Client_1.default;
|
|
@@ -119,6 +119,8 @@ const TestTimeline_1 = __importDefault(require("./src/models/TestTimeline"));
|
|
|
119
119
|
exports.TestTimeline = TestTimeline_1.default;
|
|
120
120
|
const CronData_1 = __importDefault(require("./src/models/CronData"));
|
|
121
121
|
exports.CronData = CronData_1.default;
|
|
122
|
+
const CronConfig_1 = __importDefault(require("./src/models/CronConfig"));
|
|
123
|
+
exports.CronConfig = CronConfig_1.default;
|
|
122
124
|
function seedRoles() {
|
|
123
125
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
126
|
const checkRoles = yield Role_1.default.countDocuments();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
import mongoose, { Document } from "mongoose";
|
|
26
|
+
export interface ICronConfig extends Document {
|
|
27
|
+
iid: string;
|
|
28
|
+
organizationId?: mongoose.Schema.Types.ObjectId;
|
|
29
|
+
jobName: string;
|
|
30
|
+
description: string;
|
|
31
|
+
client: mongoose.Schema.Types.ObjectId;
|
|
32
|
+
test: mongoose.Schema.Types.ObjectId;
|
|
33
|
+
active: boolean;
|
|
34
|
+
lastRun: Date;
|
|
35
|
+
nextRun: Date;
|
|
36
|
+
schedule: string;
|
|
37
|
+
metadata: mongoose.Schema.Types.Mixed;
|
|
38
|
+
createdBy: mongoose.Schema.Types.ObjectId;
|
|
39
|
+
}
|
|
40
|
+
declare const CronConfig: mongoose.Model<any, {}, {}, {}, any, any>;
|
|
41
|
+
export default CronConfig;
|
|
@@ -0,0 +1,102 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
const mongoose_1 = __importStar(require("mongoose"));
|
|
36
|
+
const constant_1 = require("../constant");
|
|
37
|
+
const CronConfigSchema = new mongoose_1.Schema({
|
|
38
|
+
iid: {
|
|
39
|
+
type: String,
|
|
40
|
+
unique: true,
|
|
41
|
+
},
|
|
42
|
+
organizationId: {
|
|
43
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
44
|
+
ref: "organization",
|
|
45
|
+
default: null,
|
|
46
|
+
},
|
|
47
|
+
jobName: {
|
|
48
|
+
type: String,
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
description: {
|
|
52
|
+
type: String,
|
|
53
|
+
},
|
|
54
|
+
client: {
|
|
55
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
56
|
+
ref: "client",
|
|
57
|
+
},
|
|
58
|
+
test: {
|
|
59
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
60
|
+
ref: "test",
|
|
61
|
+
},
|
|
62
|
+
active: {
|
|
63
|
+
type: Boolean,
|
|
64
|
+
default: true,
|
|
65
|
+
},
|
|
66
|
+
lastRun: {
|
|
67
|
+
type: Date,
|
|
68
|
+
default: null,
|
|
69
|
+
},
|
|
70
|
+
nextRun: {
|
|
71
|
+
type: Date,
|
|
72
|
+
default: null,
|
|
73
|
+
},
|
|
74
|
+
schedule: {
|
|
75
|
+
type: String,
|
|
76
|
+
required: true,
|
|
77
|
+
},
|
|
78
|
+
metadata: {
|
|
79
|
+
type: mongoose_1.default.Schema.Types.Mixed,
|
|
80
|
+
default: null,
|
|
81
|
+
},
|
|
82
|
+
createdBy: {
|
|
83
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
84
|
+
ref: "user",
|
|
85
|
+
default: null,
|
|
86
|
+
required: true,
|
|
87
|
+
},
|
|
88
|
+
}, {
|
|
89
|
+
timestamps: true
|
|
90
|
+
});
|
|
91
|
+
CronConfigSchema.pre("save", function (next) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
if (!this.iid) {
|
|
94
|
+
this.iid = (0, constant_1.generateRandomIID)();
|
|
95
|
+
}
|
|
96
|
+
next();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
CronConfigSchema.index({ test: 1 });
|
|
100
|
+
CronConfigSchema.index({ client: 1 });
|
|
101
|
+
const CronConfig = mongoose_1.default.models.cronConfig || (0, mongoose_1.model)("cronConfig", CronConfigSchema);
|
|
102
|
+
exports.default = CronConfig;
|
package/dist/src/models/Test.js
CHANGED
|
@@ -35,7 +35,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
35
35
|
const mongoose_1 = __importStar(require("mongoose"));
|
|
36
36
|
const constant_1 = require("../constant");
|
|
37
37
|
const VariationsSchema = new mongoose_1.Schema({
|
|
38
|
-
iid: { type: String,
|
|
38
|
+
iid: { type: String,
|
|
39
|
+
trim: true,
|
|
40
|
+
unique: true,
|
|
41
|
+
},
|
|
39
42
|
name: { type: String, required: true },
|
|
40
43
|
css_code: { type: String, default: "" },
|
|
41
44
|
baseline: { type: Boolean, default: false },
|
|
@@ -50,7 +53,7 @@ const VariationsSchema = new mongoose_1.Schema({
|
|
|
50
53
|
changesets: { type: String, default: "[]" }
|
|
51
54
|
});
|
|
52
55
|
const TestSchema = new mongoose_1.Schema({
|
|
53
|
-
iid: { type: String,
|
|
56
|
+
iid: { type: String, trim: true },
|
|
54
57
|
organizationId: {
|
|
55
58
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
56
59
|
ref: "organization",
|
|
@@ -62,6 +65,7 @@ const TestSchema = new mongoose_1.Schema({
|
|
|
62
65
|
enum: ["live", "draft", "ended", "paused", "preview", "running", "archive"]
|
|
63
66
|
},
|
|
64
67
|
name: { type: String, required: true },
|
|
68
|
+
traffic_allocation_type: { type: String, default: "manual", enum: ["manual", "multi-armed", "contextual"] },
|
|
65
69
|
traffic_allocation: { type: Number, default: 100 },
|
|
66
70
|
audiences_match_type: { type: String, default: "all" },
|
|
67
71
|
// Metadata fields
|
|
@@ -41,7 +41,7 @@ const TestTimelineSchema = new mongoose_1.Schema({
|
|
|
41
41
|
},
|
|
42
42
|
event: {
|
|
43
43
|
type: String,
|
|
44
|
-
enum: ["test_created", "test_updated", "test_status_changed", "test_deleted", "variant_created", "variant_updated", "variant_deleted"],
|
|
44
|
+
enum: ["test_created", "test_updated", "test_status_changed", "test_deleted", "variant_created", "variant_updated", "variant_deleted", "traffic_allocation_changed"],
|
|
45
45
|
},
|
|
46
46
|
organizationId: {
|
|
47
47
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
package/dist/src/models/User.js
CHANGED
|
@@ -67,6 +67,5 @@ const UserSchema = new mongoose_1.Schema({
|
|
|
67
67
|
// Add compound indexes for common query patterns
|
|
68
68
|
UserSchema.index({ organizationId: 1, role: 1 });
|
|
69
69
|
UserSchema.index({ organizationId: 1, client: 1 });
|
|
70
|
-
UserSchema.index({ email: 1 }, { unique: true });
|
|
71
70
|
const User = mongoose_1.default.models.user || (0, mongoose_1.model)("user", UserSchema);
|
|
72
71
|
exports.default = User;
|
package/index.ts
CHANGED
|
@@ -52,6 +52,7 @@ import CustomQuery from "./src/models/CustomQuery";
|
|
|
52
52
|
import { generateRandomIID } from "./src/constant";
|
|
53
53
|
import TestTimeline from "./src/models/TestTimeline";
|
|
54
54
|
import CronData from "./src/models/CronData";
|
|
55
|
+
import CronConfig from "./src/models/CronConfig";
|
|
55
56
|
async function seedRoles() {
|
|
56
57
|
const checkRoles = await Role.countDocuments();
|
|
57
58
|
if (checkRoles < 5) {
|
|
@@ -151,5 +152,6 @@ export {
|
|
|
151
152
|
PrecalculationFilters,
|
|
152
153
|
BqPreCompiledData,
|
|
153
154
|
CronData,
|
|
154
|
-
|
|
155
|
+
CronConfig,
|
|
156
|
+
UserPermission
|
|
155
157
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import mongoose, { Document, Schema, model } from "mongoose";
|
|
2
|
+
import { generateRandomIID } from "../constant";
|
|
3
|
+
|
|
4
|
+
export interface ICronConfig extends Document {
|
|
5
|
+
iid: string;
|
|
6
|
+
organizationId?: mongoose.Schema.Types.ObjectId;
|
|
7
|
+
jobName: string;
|
|
8
|
+
description: string;
|
|
9
|
+
client: mongoose.Schema.Types.ObjectId;
|
|
10
|
+
test: mongoose.Schema.Types.ObjectId;
|
|
11
|
+
active: boolean;
|
|
12
|
+
lastRun: Date;
|
|
13
|
+
nextRun: Date;
|
|
14
|
+
schedule: string;
|
|
15
|
+
metadata: mongoose.Schema.Types.Mixed;
|
|
16
|
+
createdBy: mongoose.Schema.Types.ObjectId;
|
|
17
|
+
}
|
|
18
|
+
const CronConfigSchema = new Schema<ICronConfig>({
|
|
19
|
+
iid: {
|
|
20
|
+
type: String,
|
|
21
|
+
unique: true,
|
|
22
|
+
},
|
|
23
|
+
organizationId: {
|
|
24
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
25
|
+
ref: "organization",
|
|
26
|
+
default: null,
|
|
27
|
+
},
|
|
28
|
+
jobName: {
|
|
29
|
+
type: String,
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
description: {
|
|
33
|
+
type: String,
|
|
34
|
+
},
|
|
35
|
+
client: {
|
|
36
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
37
|
+
ref: "client",
|
|
38
|
+
},
|
|
39
|
+
test: {
|
|
40
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
41
|
+
ref: "test",
|
|
42
|
+
},
|
|
43
|
+
active: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: true,
|
|
46
|
+
},
|
|
47
|
+
lastRun: {
|
|
48
|
+
type: Date,
|
|
49
|
+
default: null,
|
|
50
|
+
},
|
|
51
|
+
nextRun: {
|
|
52
|
+
type: Date,
|
|
53
|
+
default: null,
|
|
54
|
+
},
|
|
55
|
+
schedule: {
|
|
56
|
+
type: String,
|
|
57
|
+
required: true,
|
|
58
|
+
},
|
|
59
|
+
metadata: {
|
|
60
|
+
type: mongoose.Schema.Types.Mixed,
|
|
61
|
+
default: null,
|
|
62
|
+
},
|
|
63
|
+
createdBy: {
|
|
64
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
65
|
+
ref: "user",
|
|
66
|
+
default: null,
|
|
67
|
+
required: true,
|
|
68
|
+
},
|
|
69
|
+
}, {
|
|
70
|
+
timestamps: true
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
CronConfigSchema.pre("save", async function (next) {
|
|
74
|
+
if (!this.iid) {
|
|
75
|
+
this.iid = generateRandomIID();
|
|
76
|
+
}
|
|
77
|
+
next();
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
CronConfigSchema.index({ test: 1 });
|
|
81
|
+
CronConfigSchema.index({ client: 1 });
|
|
82
|
+
|
|
83
|
+
const CronConfig = mongoose.models.cronConfig || model<ICronConfig>("cronConfig", CronConfigSchema);
|
|
84
|
+
export default CronConfig;
|
package/src/models/Test.ts
CHANGED
|
@@ -23,6 +23,7 @@ export interface ITest extends Document {
|
|
|
23
23
|
iid: string;
|
|
24
24
|
status: string;
|
|
25
25
|
name: string;
|
|
26
|
+
traffic_allocation_type: string;
|
|
26
27
|
traffic_allocation: number;
|
|
27
28
|
audiences_match_type: string;
|
|
28
29
|
// Metadata fields
|
|
@@ -81,7 +82,10 @@ export interface ITest extends Document {
|
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
const VariationsSchema = new Schema<IVariations>({
|
|
84
|
-
iid: { type: String,
|
|
85
|
+
iid: { type: String,
|
|
86
|
+
trim: true,
|
|
87
|
+
unique: true,
|
|
88
|
+
},
|
|
85
89
|
name: { type: String, required: true },
|
|
86
90
|
css_code: { type: String, default: "" },
|
|
87
91
|
baseline: { type: Boolean, default: false },
|
|
@@ -98,7 +102,7 @@ const VariationsSchema = new Schema<IVariations>({
|
|
|
98
102
|
|
|
99
103
|
const TestSchema = new Schema<ITest>(
|
|
100
104
|
{
|
|
101
|
-
iid: { type: String,
|
|
105
|
+
iid: { type: String, trim: true },
|
|
102
106
|
organizationId: {
|
|
103
107
|
type: mongoose.Schema.Types.ObjectId,
|
|
104
108
|
ref: "organization",
|
|
@@ -110,9 +114,9 @@ const TestSchema = new Schema<ITest>(
|
|
|
110
114
|
enum: ["live", "draft", "ended", "paused", "preview", "running", "archive"]
|
|
111
115
|
},
|
|
112
116
|
name: { type: String, required: true },
|
|
117
|
+
traffic_allocation_type: { type: String, default: "manual", enum: ["manual", "multi-armed", "contextual"] },
|
|
113
118
|
traffic_allocation: { type: Number, default: 100 },
|
|
114
119
|
audiences_match_type: { type: String, default: "all" },
|
|
115
|
-
|
|
116
120
|
// Metadata fields
|
|
117
121
|
metadata_1: { type: mongoose.Schema.Types.Mixed, default: null },
|
|
118
122
|
metadata_2: { type: mongoose.Schema.Types.Mixed, default: null },
|
|
@@ -20,7 +20,7 @@ const TestTimelineSchema = new Schema<ITestTimeline>({
|
|
|
20
20
|
},
|
|
21
21
|
event: {
|
|
22
22
|
type: String,
|
|
23
|
-
enum: ["test_created", "test_updated","test_status_changed", "test_deleted", "variant_created", "variant_updated", "variant_deleted"],
|
|
23
|
+
enum: ["test_created", "test_updated","test_status_changed", "test_deleted", "variant_created", "variant_updated", "variant_deleted", "traffic_allocation_changed"],
|
|
24
24
|
},
|
|
25
25
|
organizationId: {
|
|
26
26
|
type: mongoose.Schema.Types.ObjectId,
|
package/src/models/User.ts
CHANGED
|
@@ -65,7 +65,6 @@ const UserSchema = new Schema<IUser>(
|
|
|
65
65
|
// Add compound indexes for common query patterns
|
|
66
66
|
UserSchema.index({ organizationId: 1, role: 1 });
|
|
67
67
|
UserSchema.index({ organizationId: 1, client: 1 });
|
|
68
|
-
UserSchema.index({ email: 1 }, { unique: true });
|
|
69
68
|
|
|
70
69
|
const User = mongoose.models.user || model<IUser>("user", UserSchema);
|
|
71
70
|
export default User;
|