diff --git a/modules/analytics/db/schema.prisma b/modules/analytics/db/schema.prisma new file mode 100644 index 00000000..989e1121 --- /dev/null +++ b/modules/analytics/db/schema.prisma @@ -0,0 +1,17 @@ +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") + +} + +model Event { + id String @db.Uuid @default(uuid()) @unique + timestamp DateTime @db.Timestamptz + name String + metadata Json? + + // in the init migration, we add the timescale extension and call create_hypertable(). + + @@index(fields: [name, timestamp(sort: Desc)], map: "event_name_time_idx") + @@map("event") +} diff --git a/modules/analytics/db/schema.ts b/modules/analytics/db/schema.ts new file mode 100644 index 00000000..cfe125f0 --- /dev/null +++ b/modules/analytics/db/schema.ts @@ -0,0 +1,11 @@ +import { Query, schema, uniqueIndex, index } from "./schema.gen.ts"; + +export const events = schema.table("events", { + id: Query.uuid("id").primaryKey().defaultRandom(), + timestamp: Query.timestamp("timestamp"), + name: Query.text("name"), + metadata: Query.jsonb("metadata") +}, (table) => ({ + eventId: uniqueIndex("event_id").on(table.id), + eventNameTime: index("event_name_time").on(table.name, Query.desc(table.timestamp)) +})); diff --git a/modules/analytics/module.json b/modules/analytics/module.json index b1e72a23..f157a402 100644 --- a/modules/analytics/module.json +++ b/modules/analytics/module.json @@ -1,12 +1,15 @@ { - "name": "Analytics", - "description": "Track and visualize user behavior data. (Coming mid-2024)", - "icon": "chart-line", - "tags": [ - "game" - ], - "authors": [], - "status": "coming_soon", - "scripts": {}, - "errors": {} + "status": "stable", + "name": "Analytics", + "description": "Track and visualize user behavior data", + "icon": "chart-line", + "tags": [], + "authors": [ + "rivet-gg", + "ABCxFF" + ], + "scripts": { + }, + "errors": {}, + "dependencies": {} }