Open ansarizafar opened 1 year ago
@AndriiSherman Is it possible to add push schema feature to Drizzle-ORM?
Would be very useful to generate memory based SQL clients for testing purposes:
import { createClient } from '@libsql/client';
import { pushSchema } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/libsql';
import { schema } from './schema';
export const createDatabaseClientMock = () => {
const client = createClient({ url: ':memory:' });
const db = drizzle(client);
await pushSchema(schema, db)
return db;
};
Would be very useful to generate memory based SQL clients for testing purposes:
import { createClient } from '@libsql/client'; import { pushSchema } from 'drizzle-orm'; import { drizzle } from 'drizzle-orm/libsql'; import { schema } from './schema'; export const createDatabaseClientMock = () => { const client = createClient({ url: ':memory:' }); const db = drizzle(client); await pushSchema(schema, db) return db; };
@hugo082
I'm using v0.30.10, it does not have this command.
Module '"drizzle-orm"' has no exported member 'pushSchema'
Is there any progress on this issue? Push feature will also be useful for migrating PGLite schema.
Kit now exposes it's API which includes a push function. This isn't documented though.
@L-Mario564 Could you please share a code sample or a link about Kit push API?
I'm running it on deno — there is some weirdness with conditional exports — I worked around it by vendoring drizzle-kit/api
/// main.ts
import { drizzle } from "drizzle-orm/pglite";
import { integer, pgTable, varchar } from "drizzle-orm/pg-core";
import { pushSchema } from "drizzle-kit/api";
let db = drizzle();
let users = pgTable("users", {
id: integer().primaryKey().generatedAlwaysAsIdentity(),
name: varchar({ length: 255 }).notNull(),
age: integer().notNull(),
email: varchar({ length: 255 }).notNull().unique(),
});
const patch = await pushSchema({ users }, db);
await patch.apply();
await db.insert(users).values([
{ name: "Alice", age: 30, email: "alice@psu.edu" },
{ name: "Bob", age: 40, email: "bob@osu.edu" },
]);
console.log(await db.$count(users));
Describe what you want
I am using libsql and I am building a desktop and a mobile app. I can't bundle migrations folder with my app. Dirizzle-kit has a push command for altering database schema rapidly but we can't push changes with drizzle-orm at runtime.
lLike migrate, please provide a push function with drizzle-orm for schema modifications without first generating the migration scripts.