Files
recommender/packages/backend/src/db/schema.ts
Jose Henrique ba38092784
All checks were successful
Recommender Build and Deploy (internal) / Build Recommender Image (push) Successful in 4m4s
Recommender Build and Deploy (internal) / Deploy Recommender (internal) (push) Successful in 11s
new things
2026-04-02 19:24:58 -03:00

35 lines
1.6 KiB
TypeScript

import { pgTable, uuid, text, jsonb, timestamp, integer, uniqueIndex, boolean } from 'drizzle-orm/pg-core';
import type { CuratorOutput } from '../types/agents.js';
export const recommendations = pgTable('recommendations', {
id: uuid('id').defaultRandom().primaryKey(),
title: text('title').notNull(),
main_prompt: text('main_prompt').notNull(),
liked_shows: text('liked_shows').notNull().default(''),
disliked_shows: text('disliked_shows').notNull().default(''),
themes: text('themes').notNull().default(''),
brainstorm_count: integer('brainstorm_count').notNull().default(100),
media_type: text('media_type').notNull().default('tv_show'),
use_web_search: boolean('use_web_search').notNull().default(false),
use_validator: boolean('use_validator').notNull().default(false),
hard_requirements: boolean('hard_requirements').notNull().default(false),
self_expansive: boolean('self_expansive').notNull().default(false),
expansive_passes: integer('expansive_passes').notNull().default(1),
expansive_mode: text('expansive_mode').notNull().default('soft'),
recommendations: jsonb('recommendations').$type<CuratorOutput[]>(),
status: text('status').notNull().default('pending'),
created_at: timestamp('created_at').defaultNow().notNull(),
});
export const feedback = pgTable(
'feedback',
{
id: uuid('id').defaultRandom().primaryKey(),
item_name: text('item_name').notNull(),
stars: integer('stars').notNull(),
feedback: text('feedback').notNull().default(''),
created_at: timestamp('created_at').defaultNow().notNull(),
},
(table) => [uniqueIndex('feedback_item_name_idx').on(table.item_name)],
);