import { mysqlTable, int, primaryKey, varchar, bigint } from "drizzle-orm/mysql-core" import { timestamps } from "../drizzle/types" export const IpTable = mysqlTable( "ip", { ip: varchar("ip", { length: 45 }).notNull(), ...timestamps, usage: int("usage"), }, (table) => [primaryKey({ columns: [table.ip] })], ) export const IpRateLimitTable = mysqlTable( "ip_rate_limit", { ip: varchar("ip", { length: 45 }).notNull(), interval: varchar("interval", { length: 10 }).notNull(), count: int("count").notNull(), }, (table) => [primaryKey({ columns: [table.ip, table.interval] })], ) export const KeyRateLimitTable = mysqlTable( "key_rate_limit", { key: varchar("key", { length: 255 }).notNull(), interval: varchar("interval", { length: 40 }).notNull(), count: int("count").notNull(), }, (table) => [primaryKey({ columns: [table.key, table.interval] })], ) export const ModelTpmRateLimitTable = mysqlTable( "model_tpm_rate_limit", { id: varchar("id", { length: 255 }).notNull(), interval: bigint("interval", { mode: "number" }).notNull(), count: int("count").notNull(), }, (table) => [primaryKey({ columns: [table.id, table.interval] })], ) export const ModelTpsRateLimitTable = mysqlTable( "model_tps_rate_limit", { id: varchar("id", { length: 255 }).notNull(), interval: bigint("interval", { mode: "number" }).notNull(), qualify: int("qualify").notNull(), unqualify: int("unqualify").notNull(), }, (table) => [primaryKey({ columns: [table.id, table.interval] })], ) export const ModelStickyProviderTable = mysqlTable( "model_sticky_provider", { id: varchar("id", { length: 255 }).notNull(), ...timestamps, providerId: varchar("provider_id", { length: 255 }).notNull(), }, (table) => [primaryKey({ columns: [table.id] })], )