Skip to content

Commit

Permalink
adding missing driver declaration in drizzle-orm
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodriguespn committed Sep 20, 2024
1 parent f32c8b8 commit ba42814
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 16 deletions.
1 change: 1 addition & 0 deletions drizzle-kit/src/cli/commands/singlestoreUp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const upSinglestoreHandler = (out: string) => {};
6 changes: 3 additions & 3 deletions drizzle-kit/src/cli/commands/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ export const preparePushConfig = async (
if (config.dialect === 'singlestore') {
const parsed = singlestoreCredentials.safeParse(config);
if (!parsed.success) {
printIssuesPg(config);
printIssuesSingleStore(config);
process.exit(1);
}

Expand Down Expand Up @@ -508,7 +508,7 @@ export const preparePullConfig = async (
if (dialect === 'singlestore') {
const parsed = singlestoreCredentials.safeParse(config);
if (!parsed.success) {
printIssuesPg(config);
printIssuesSingleStore(config);
process.exit(1);
}

Expand Down Expand Up @@ -617,7 +617,7 @@ export const prepareStudioConfig = async (options: Record<string, unknown>) => {
if (dialect === 'singlestore') {
const parsed = singlestoreCredentials.safeParse(flattened);
if (!parsed.success) {
printIssuesPg(flattened as Record<string, unknown>);
printIssuesSingleStore(flattened as Record<string, unknown>);
process.exit(1);
}
const credentials = parsed.data;
Expand Down
27 changes: 16 additions & 11 deletions drizzle-kit/src/cli/schema.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
import { boolean, command, number, string } from '@drizzle-team/brocli';
import chalk from 'chalk';
import { checkHandler } from './commands/check';
import { assertOrmCoreVersion, assertPackages, assertStudioNodeVersion, ormVersionGt } from './utils';
import 'dotenv/config';
import { mkdirSync } from 'fs';
import { renderWithTask } from 'hanji';
import { dialects } from 'src/schemaValidator';
import '../@types/utils';
import { assertUnreachable } from '../global';
import { drizzleForLibSQL, drizzleForSingleStore, prepareSingleStoreSchema, type Setup } from '../serializer/studio';
import { assertV1OutFolder } from '../utils';
import { certs } from '../utils/certs';
import { checkHandler } from './commands/check';
import { dropMigration } from './commands/drop';
import { prepareAndMigrateSingleStore } from './commands/migrate';
import { upMysqlHandler } from './commands/mysqlUp';
import { upPgHandler } from './commands/pgUp';
import { upSinglestoreHandler } from './commands/singlestoreUp';
import { upSqliteHandler } from './commands/sqliteUp';
import {
prepareCheckParams,
Expand All @@ -16,17 +25,9 @@ import {
preparePushConfig,
prepareStudioConfig,
} from './commands/utils';
import { assertOrmCoreVersion, assertPackages, assertStudioNodeVersion, ormVersionGt } from './utils';
import { assertCollisions, drivers, prefixes } from './validations/common';
import { withStyle } from './validations/outputs';
import 'dotenv/config';
import { boolean, command, number, string } from '@drizzle-team/brocli';
import { mkdirSync } from 'fs';
import { renderWithTask } from 'hanji';
import { dialects } from 'src/schemaValidator';
import { assertUnreachable } from '../global';
import { drizzleForLibSQL, drizzleForSingleStore, prepareSingleStoreSchema, type Setup } from '../serializer/studio';
import { certs } from '../utils/certs';
import { prepareAndMigrateSingleStore } from './commands/migrate';
import { grey, MigrateProgress } from './views';

const optionDialect = string('dialect')
Expand Down Expand Up @@ -407,6 +408,10 @@ export const up = command({
upMysqlHandler(out);
}

if (dialect === 'singlestore') {
upSinglestoreHandler(out);
}

if (dialect === 'sqlite' || dialect === 'turso') {
upSqliteHandler(out);
}
Expand Down
20 changes: 19 additions & 1 deletion drizzle-orm/src/monodriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import type { PostgresJsDatabase } from './postgres-js/index.ts';
import type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';
import type { DrizzleConfig } from './utils.ts';
import type { VercelPgDatabase } from './vercel-postgres/index.ts';
import type { SingleStore2Database, SingleStore2DrizzleConfig } from './singlestore/driver.ts';

type BunSqliteDatabaseOptions =
| number
Expand Down Expand Up @@ -98,7 +99,8 @@ type DatabaseClient =
| 'libsql'
| 'd1'
| 'bun:sqlite'
| 'better-sqlite3';
| 'better-sqlite3'
| 'singlestore';

type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
'node-postgres': NodePgDatabase<TSchema>;
Expand All @@ -114,6 +116,7 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
d1: DrizzleD1Database<TSchema>;
'bun:sqlite': BunSQLiteDatabase<TSchema>;
'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;
singlestore: SingleStore2Database<TSchema>;
};

type ClientInstanceMap = {
Expand All @@ -135,6 +138,7 @@ type ClientInstanceMap = {
d1: D1Database;
'bun:sqlite': BunDatabase;
'better-sqlite3': BetterSQLite3Database;
singlestore: SingleStore2Database;
};

type InitializerParams = {
Expand Down Expand Up @@ -177,6 +181,10 @@ type InitializerParams = {
'better-sqlite3': {
connection?: BetterSQLite3DatabaseConfig;
};
singlestore: {
// This Mysql2Config is from the node package 'mysql2' and not the one from Drizzle
connection: Mysql2Config;
};
};

type DetermineClient<
Expand Down Expand Up @@ -379,6 +387,16 @@ export async function drizzle<
const db = drizzle(sql, drizzleConfig) as any;
db.$client = sql;

return db;
}
case 'singlestore': {
const { createPool } = await import('mysql2/promise').catch(() => importError('mysql2/promise'));
const instance = createPool(connection as Mysql2Config);
const { drizzle } = await import('./mysql2');

const db = drizzle(instance, drizzleConfig as SingleStore2DrizzleConfig) as any;
db.$client = instance;

return db;
}
}
Expand Down
9 changes: 8 additions & 1 deletion drizzle-orm/src/monomigrator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type { NeonDatabase } from './neon-serverless/index.ts';
import type { NodePgDatabase } from './node-postgres/index.ts';
import type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';
import type { PostgresJsDatabase } from './postgres-js/index.ts';
import type { SingleStore2Database } from './singlestore/driver.ts';
import type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';
import type { VercelPgDatabase } from './vercel-postgres/index.ts';

Expand All @@ -29,7 +30,8 @@ export async function migrate(
| PlanetScaleDatabase<any>
| PostgresJsDatabase<any>
| VercelPgDatabase<any>
| TiDBServerlessDatabase<any>,
| TiDBServerlessDatabase<any>
| SingleStore2Database<any>,
config:
| string
| MigrationConfig,
Expand Down Expand Up @@ -100,5 +102,10 @@ export async function migrate(

return migrate(db as VercelPgDatabase, config as string | MigrationConfig);
}
case 'SingleStore2Database': {
const { migrate } = await import('./singlestore/migrator');

return migrate(db as SingleStore2Database, config as MigrationConfig);
}
}
}

0 comments on commit ba42814

Please sign in to comment.