@coursebuilder/adapter-drizzle
Version:
Drizzle adapter for Course Builder.
24 lines (21 loc) • 797 B
text/typescript
import { customType } from 'drizzle-orm/mysql-core'
export const datetimeUtc = (name: string, precision: number) =>
customType<{ data: Date; driverData: string }>({
dataType() {
return `datetime(${precision})`
},
toDriver(value: Date): string {
return mysqlDatetimeUtc(value)
},
fromDriver(value: string): Date {
return mysqlDatetimeUtcToDate(value)
},
})(name)
function mysqlDatetimeUtc(date: Date = new Date()) {
return date.toISOString().slice(0, 19).replace('T', ' ')
}
// Use this function instead of new Date() when converting a MySQL datetime to a
// Date object so that the date is interpreted as UTC instead of local time (default behavior)
function mysqlDatetimeUtcToDate(mysqlDatetimeUtc: string) {
return new Date(mysqlDatetimeUtc.replace(' ', 'T') + 'Z')
}