changelogs/drizzle-orm-mysql/0.15.1.md
Add support for schemas -> MySQL schemas
Warning If you will have tables with same names in different schemas then drizzle will respond with
never[]error in result types and error from databaseIn this case you may use alias syntax
Usage example
// Table in default schema
const publicUsersTable = mysqlTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
verified: boolean('verified').notNull().default(false),
jsonb: json<string[]>('jsonb'),
createdAt: timestamp('created_at', { fsp: 2 }).notNull().defaultNow(),
});
// Table in custom schema
const mySchema = mysqlSchema('mySchema');
const mySchemaUsersTable = mySchema('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
verified: boolean('verified').notNull().default(false),
jsonb: json<string[]>('jsonb'),
createdAt: timestamp('created_at', { fsp: 2 }).notNull().defaultNow(),
});
foreignKey() function api changes. Previously you need to pass callback function with table columns for FK. Right now no need for callback, just object with data for FKexport const usersTable = mysqlTable('userstest', {
id: serial('id').primaryKey(),
homeCity: text('name').notNull(),
createdAt: timestamp('created_at', { fsp: 2 }).notNull().defaultNow(),
}, (users) => ({
// foreignKey has a callback as param
usersCityFK: foreignKey(() => { columns: [users.homeCity], foreignColumns: [cities.id] }),
}));
export const usersTable = mysqlTable('userstest', {
id: serial('id').primaryKey(),
homeCity: text('name').notNull(),
createdAt: timestamp('created_at', { fsp: 2 }).notNull().defaultNow(),
}, (users) => ({
// foreignKey has a callback as param
usersCityFK: foreignKey({ columns: [users.homeCity], foreignColumns: [cities.id] }),
}));
You should use
mysqlEnum('popularity', ['unknown', 'known', 'popular']).notNull().default('known')
instead of
export const popularityEnum = mysqlEnum('popularity', ['unknown', 'known', 'popular']);
popularityEnum('column_name');
Usage example in table schema
const tableWithEnums = mysqlTable('enums_test_case', {
id: serial('id').primaryKey(),
enum1: mysqlEnum('enum1', ['a', 'b', 'c']).notNull(),
enum2: mysqlEnum('enum2', ['a', 'b', 'c']).default('a'),
enum3: mysqlEnum('enum3', ['a', 'b', 'c']).notNull().default('b'),
});