@coursebuilder/adapter-drizzle
Version:
Drizzle adapter for Course Builder.
47 lines (45 loc) • 1.43 kB
text/typescript
import { sql } from 'drizzle-orm'
import {
datetime,
index,
json,
MySqlTableFn,
primaryKey,
varchar,
} from 'drizzle-orm/mysql-core'
export function getLessonProgressSchema(mysqlTable: MySqlTableFn) {
return mysqlTable(
'LessonProgress',
{
id: varchar('id', { length: 191 }).notNull().primaryKey(),
userId: varchar('userId', { length: 191 }).notNull(),
organizationId: varchar('organizationId', { length: 191 }),
organizationMembershipId: varchar('organizationMembershipId', {
length: 191,
}),
lessonId: varchar('lessonId', { length: 191 }),
lessonSlug: varchar('lessonSlug', { length: 191 }),
lessonVersion: varchar('lessonVersion', { length: 191 }),
sectionId: varchar('sectionId', { length: 191 }),
moduleId: varchar('moduleId', { length: 191 }),
completedAt: datetime('completedAt', { mode: 'date', fsp: 3 }),
updatedAt: datetime('updatedAt', { mode: 'date', fsp: 3 }),
createdAt: datetime('createdAt', { mode: 'date', fsp: 3 })
.default(sql`CURRENT_TIMESTAMP(3)`)
.notNull(),
},
(crp) => {
return {
userIdLessonIdIdx: index('crp_userId_contentResourceId_idx').on(
crp.userId,
crp.lessonId,
),
userIdIdx: index('userId_idx').on(crp.userId),
lessonIdIdx: index('lessonId_idx').on(crp.lessonId),
organizationMembershipIdIdx: index('organizationMembershipId_idx').on(
crp.organizationMembershipId,
),
}
},
)
}