import { sql } from "drizzle-orm"; import { pgTable, text, varchar, integer, timestamp, boolean } from "drizzle-orm/pg-core"; import { createInsertSchema } from "drizzle-zod"; import { z } from "zod"; export const videos = pgTable("videos", { id: varchar("id").primaryKey(), title: text("title").notNull(), description: text("description").default("").notNull(), thumbnailUrl: text("thumbnail_url").notNull(), customThumbnailUrl: text("custom_thumbnail_url"), videoUrl: text("video_url").notNull(), videoUrlMp4: text("video_url_mp4"), videoUrlIframe: text("video_url_iframe"), duration: integer("duration").notNull(), // in seconds views: integer("views").notNull().default(0), category: text("category").default("").notNull(), tags: text("tags").array().default([]).notNull(), isPublic: boolean("is_public").default(true).notNull(), createdAt: timestamp("created_at").notNull().default(sql`CURRENT_TIMESTAMP`), updatedAt: timestamp("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`), }); export const insertVideoSchema = createInsertSchema(videos).omit({ id: true, createdAt: true, updatedAt: true, }); export const updateVideoSchema = createInsertSchema(videos).omit({ id: true, createdAt: true, updatedAt: true, }).partial(); export type InsertVideo = z.infer; export type UpdateVideo = z.infer; export type Video = typeof videos.$inferSelect;