import { bigint, boolean, date, index, integer, pgEnum, pgTable, primaryKey, text, } from "drizzle-orm/pg-core"; export const globalStats = pgTable("global_stats", { // Values projects: integer("projects").notNull(), versions: bigint("versions", { mode: "number" }).notNull(), files: bigint("files", { mode: "number" }).notNull(), authors: integer("authors").notNull(), // Metadata date: date("date").notNull().primaryKey(), }); export type NewGlobalStats = typeof globalStats.$inferInsert; export const projectTypeEnum = pgEnum("project_type", [ "mod", "plugin", "datapack", "shader", "resourcepack", "modpack", ]); export const versionCategoryEnum = pgEnum("version_category", [ "all", "major", "minor", "unified", ]); export const projectStats = pgTable( "project_stats", { // Values downloads: bigint("downloads", { mode: "number" }).notNull(), versions: bigint("versions", { mode: "number" }).notNull(), count: bigint("count", { mode: "number" }).notNull(), // Version Info version: text("version").notNull(), loader: text("loader").notNull(), // Metadata date: date("date").notNull(), projectType: projectTypeEnum().notNull(), versionCategory: versionCategoryEnum().notNull(), excluded: boolean("excluded").notNull(), }, (table) => [ primaryKey({ columns: [ table.version, table.loader, table.date, table.projectType, table.versionCategory, table.excluded, ], }), index("project_stats_lookup_idx").on( table.date, table.projectType, table.versionCategory, table.excluded, table.version, ), ], ); export type NewProjectStats = typeof projectStats.$inferInsert;