import {
  pgTable,
  uuid,
  text,
  integer,
  jsonb,
  timestamp,
  index,
  uniqueIndex,
} from 'drizzle-orm/pg-core';

import { users } from './core.js';

export const pageLayouts = pgTable(
  'page_layouts',
  {
    id: uuid('id').primaryKey().defaultRandom(),
    page: text('page').notNull(),
    version: integer('version').notNull(),
    body: jsonb('body').notNull(),
    createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
    createdBy: uuid('created_by').references(() => users.id),
    note: text('note').notNull().default(''),
  },
  (t) => [
    uniqueIndex('page_layouts_page_version_uk').on(t.page, t.version),
    index('page_layouts_page_idx').on(t.page),
  ],
);

export const pageLayoutPointers = pgTable('page_layout_pointers', {
  page: text('page').primaryKey(),
  liveVersionId: uuid('live_version_id')
    .notNull()
    .references(() => pageLayouts.id),
  draftBody: jsonb('draft_body'),
  draftUpdatedAt: timestamp('draft_updated_at', { withTimezone: true }),
  draftUpdatedBy: uuid('draft_updated_by').references(() => users.id),
  scheduledVersionId: uuid('scheduled_version_id').references(() => pageLayouts.id),
  scheduledAt: timestamp('scheduled_at', { withTimezone: true }),
  pageMetadata: jsonb('page_metadata'),
});
