import { createId } from "@paralleldrive/cuid2";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { z } from "zod";
import {
pgTable,
varchar,
timestamp,
jsonb,
integer,
} from "drizzle-orm/pg-core";
import { sql } from "drizzle-orm";
const course = pgTable("course", {
id: varchar("id")
.primaryKey()
.$defaultFn(() => createId()),
name: varchar("name").unique().notNull(),
description: varchar("description").notNull(),
image_url: varchar("image_url"),
content_object: jsonb("content_object"),
version: integer("version").default(1).notNull(),
dependencies_courses: varchar("dependencies_courses").array().references(() => course.id),
created_at: timestamp("created_at", {
precision: 3,
})
.default(sql`CURRENT_TIMESTAMP(3)`)
.notNull(),
updated_at: timestamp("updated_at")
.default(sql`CURRENT_TIMESTAMP(3)`)
.$onUpdateFn(() => new Date())
.notNull(),
});
const insertCourseSchema = createInsertSchema(course);
interface NewCourse extends z.infer<typeof insertCourseSchema> {}
const selectCourseSchema = createSelectSchema(course);
interface Course extends z.infer<typeof selectCourseSchema> {}
export { course, insertCourseSchema, selectCourseSchema };
export type { NewCourse, Course };
import { createId } from "@paralleldrive/cuid2";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { z } from "zod";
import {
pgTable,
varchar,
timestamp,
jsonb,
integer,
} from "drizzle-orm/pg-core";
import { sql } from "drizzle-orm";
const course = pgTable("course", {
id: varchar("id")
.primaryKey()
.$defaultFn(() => createId()),
name: varchar("name").unique().notNull(),
description: varchar("description").notNull(),
image_url: varchar("image_url"),
content_object: jsonb("content_object"),
version: integer("version").default(1).notNull(),
dependencies_courses: varchar("dependencies_courses").array().references(() => course.id),
created_at: timestamp("created_at", {
precision: 3,
})
.default(sql`CURRENT_TIMESTAMP(3)`)
.notNull(),
updated_at: timestamp("updated_at")
.default(sql`CURRENT_TIMESTAMP(3)`)
.$onUpdateFn(() => new Date())
.notNull(),
});
const insertCourseSchema = createInsertSchema(course);
interface NewCourse extends z.infer<typeof insertCourseSchema> {}
const selectCourseSchema = createSelectSchema(course);
interface Course extends z.infer<typeof selectCourseSchema> {}
export { course, insertCourseSchema, selectCourseSchema };
export type { NewCourse, Course };