mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-11 08:18:37 +01:00
new selfhosted version
This commit is contained in:
20
shared_global/schema/aggregation/AggBouncingSchema.ts
Normal file
20
shared_global/schema/aggregation/AggBouncingSchema.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { model, Schema } from 'mongoose';
|
||||
|
||||
export type TAggBouncing = {
|
||||
project_id: Schema.Types.ObjectId,
|
||||
domain: string,
|
||||
from: Date,
|
||||
to: Date,
|
||||
data: { _id: { date: Date }, count: number, timestamp: number }[]
|
||||
}
|
||||
|
||||
const AggBouncingSchema = new Schema<TAggBouncing>({
|
||||
project_id: { type: Schema.Types.ObjectId, index: true },
|
||||
domain: { type: String, required: true },
|
||||
from: { type: Date, required: true },
|
||||
to: { type: Date, required: true },
|
||||
data: [{ type: Schema.Types.Mixed }]
|
||||
});
|
||||
|
||||
export const AggBouncingModel = model<TAggBouncing>('agg_bouncings', AggBouncingSchema);
|
||||
|
||||
20
shared_global/schema/aggregation/AggDurationSchema.ts
Normal file
20
shared_global/schema/aggregation/AggDurationSchema.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { model, Schema } from 'mongoose';
|
||||
|
||||
export type TAggDuration = {
|
||||
project_id: Schema.Types.ObjectId,
|
||||
domain: string,
|
||||
from: Date,
|
||||
to: Date,
|
||||
data: { _id: { date: Date }, count: number, timestamp: number }[]
|
||||
}
|
||||
|
||||
const AggDurationSchema = new Schema<TAggDuration>({
|
||||
project_id: { type: Schema.Types.ObjectId, index: true },
|
||||
domain: { type: String, required: true },
|
||||
from: { type: Date, required: true },
|
||||
to: { type: Date, required: true },
|
||||
data: [{ type: Schema.Types.Mixed }]
|
||||
});
|
||||
|
||||
export const AggDurationModel = model<TAggDuration>('agg_durations', AggDurationSchema);
|
||||
|
||||
25
shared_global/schema/aggregation/AggSchema.ts
Normal file
25
shared_global/schema/aggregation/AggSchema.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { model, Schema } from 'mongoose';
|
||||
|
||||
export type TAgg = {
|
||||
project_id: Schema.Types.ObjectId,
|
||||
domain: string,
|
||||
data_type: string,
|
||||
date: Date,
|
||||
data: number
|
||||
}
|
||||
|
||||
const AggSchema = new Schema<TAgg>({
|
||||
project_id: { type: Schema.Types.ObjectId, index: true },
|
||||
data_type: { type: String, index: true, required: true },
|
||||
domain: { type: String, required: true },
|
||||
date: { type: Date, required: true },
|
||||
data: { type: Number, required: true }
|
||||
});
|
||||
|
||||
AggSchema.index(
|
||||
{ project_id: 1, date: 1, domain: 1, data_type: 1 },
|
||||
{ unique: true }
|
||||
);
|
||||
|
||||
export const AggModel = model<TAgg>('aggregations', AggSchema);
|
||||
|
||||
20
shared_global/schema/aggregation/AggSessionSchema.ts
Normal file
20
shared_global/schema/aggregation/AggSessionSchema.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { model, Schema } from 'mongoose';
|
||||
|
||||
export type TAggSession = {
|
||||
project_id: Schema.Types.ObjectId,
|
||||
domain: string,
|
||||
from: Date,
|
||||
to: Date,
|
||||
data: { _id: { date: Date }, count: number, timestamp: number }[]
|
||||
}
|
||||
|
||||
const AggSessionSchema = new Schema<TAggSession>({
|
||||
project_id: { type: Schema.Types.ObjectId, index: true },
|
||||
domain: { type: String, required: true },
|
||||
from: { type: Date, required: true },
|
||||
to: { type: Date, required: true },
|
||||
data: [{ type: Schema.Types.Mixed }]
|
||||
});
|
||||
|
||||
export const AggSessionModel = model<TAggSession>('agg_sessions', AggSessionSchema);
|
||||
|
||||
20
shared_global/schema/aggregation/AggVisitSchema.ts
Normal file
20
shared_global/schema/aggregation/AggVisitSchema.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { model, Schema } from 'mongoose';
|
||||
|
||||
export type TAggVisit = {
|
||||
project_id: Schema.Types.ObjectId,
|
||||
domain: string,
|
||||
from: Date,
|
||||
to: Date,
|
||||
data: { _id: { date: Date }, count: number, timestamp: number }[]
|
||||
}
|
||||
|
||||
const AggVisitSchema = new Schema<TAggVisit>({
|
||||
project_id: { type: Schema.Types.ObjectId, index: true },
|
||||
domain: { type: String, required: true },
|
||||
from: { type: Date, required: true },
|
||||
to: { type: Date, required: true },
|
||||
data: [{ type: Schema.Types.Mixed }]
|
||||
});
|
||||
|
||||
export const AggVisitModel = model<TAggVisit>('agg_visits', AggVisitSchema);
|
||||
|
||||
Reference in New Issue
Block a user