UPDATE: The 0.28.3
release introduced a bug with types specifically for esm
projects. Everything works as expected with cjs
. If you're experiencing any type-related bugs as described in #1090, please downgrade to 0.28.2
. We are working on releasing 0.28.4 with all the fixes asap
-
🎉 Added SQLite simplified query API
-
🎉 Added
.$defaultFn()
/.$default()
methods to column builders
You can specify any logic and any implementation for a function like cuid()
for runtime defaults. Drizzle won't limit you in the number of implementations you can add.
Note: This value does not affect the
drizzle-kit
behavior, it is only used at runtime indrizzle-orm
import { varchar, mysqlTable } from "drizzle-orm/mysql-core";
import { createId } from '@paralleldrive/cuid2';
const table = mysqlTable('table', {
id: varchar('id', { length: 128 }).$defaultFn(() => createId()),
});
-
🎉 Added
table.$inferSelect
/table._.inferSelect
andtable.$inferInsert
/table._.inferInsert
for more convenient table model type inference -
🛠 Deprecated
InferModel
type in favor of more explicitInferSelectModel
andInferInsertModel
import { InferSelectModel, InferInsertModel } from 'drizzle-orm'
const usersTable = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
verified: boolean('verified').notNull().default(false),
jsonb: jsonb('jsonb').$type<string[]>(),
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
});
type SelectUser = typeof usersTable.$inferSelect;
type InsertUser = typeof usersTable.$inferInsert;
type SelectUser2 = InferSelectModel<typeof usersTable>;
type InsertUser2 = InferInsertModel<typeof usersTable>;
- 🛠 Disabled
.d.ts
files bundling - 🐛 Fixed sqlite-proxy and SQL.js response from
.get()
when the result is empty