import { bigint, pgEnum, pgTable, timestamp, uuid, varchar } from 'drizzle-orm/pg-core' // Enums for permission levels export const roleManagePermissionEnum = pgEnum('role_manage_permission', [ 'everyone', 'all_admins', 'admin_can_promote_members', 'admin_can_change_info', 'admin_can_manage_chat', 'only_owner', ]) export const roleMentionPermissionEnum = pgEnum('role_mention_permission', [ 'everyone', 'all_admins', 'only_owner', ]) export const roleSchema = pgTable('roles', { id: uuid('id').primaryKey().defaultRandom(), slug: varchar('slug', { length: 32 }).notNull(), aliases: varchar('aliases', { length: 32 }).array().notNull().default([]), chatId: bigint('chat_id', { mode: 'number' }).notNull(), createdAt: timestamp('created_at').notNull().defaultNow(), updatedAt: timestamp('updated_at').notNull().defaultNow().$onUpdate(() => new Date()), }) export const roleMembersSchema = pgTable('role_members', { id: uuid('id').primaryKey().defaultRandom(), roleId: uuid('role_id').references(() => roleSchema.id), userId: bigint('user_id', { mode: 'number' }).notNull(), createdAt: timestamp('created_at').notNull().defaultNow(), }) export const chatConfigSchema = pgTable('chat_configs', { id: uuid('id').primaryKey().defaultRandom(), chatId: bigint('chat_id', { mode: 'number' }).notNull().unique(), // Who can manage roles (add/delete) roleManagePermission: roleManagePermissionEnum('role_manage_permission') .notNull() .default('all_admins'), // Who can mention roles (@role or /role commands) roleMentionPermission: roleMentionPermissionEnum('role_mention_permission') .notNull() .default('everyone'), createdAt: timestamp('created_at').notNull().defaultNow(), updatedAt: timestamp('updated_at').notNull().defaultNow().$onUpdate(() => new Date()), })