import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core'
import { sql } from 'drizzle-orm'
import { ApiProviderStatus } from '../../shared/enums'

export const apiProviders = sqliteTable(
  'api_providers',
  {
    id: text('id').primaryKey(),
    name: text('name').notNull(),
    provider: text('provider').notNull(),
    apiKey: text('api_key').notNull().default(''),
    baseUrl: text('base_url').notNull().default(''),
    modelName: text('model_name').notNull().default(''),
    isActive: integer('is_active').notNull().default(0),
    status: text('status').notNull().default(ApiProviderStatus.NOT_CONFIGURED),
    statusError: text('status_error').notNull().default(''),
    modelsFetchedAt: text('models_fetched_at').notNull().default(''),
    modelsFetchError: text('models_fetch_error').notNull().default(''),
    userId: text('user_id').notNull().default(''),
    createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
    updatedAt: text('updated_at').notNull().default(sql`(datetime('now'))`),
  },
)

export type ApiProvider = typeof apiProviders.$inferSelect
export type NewApiProvider = typeof apiProviders.$inferInsert
