Skip to content

Commit

Permalink
rebase singlestore connector with last commit: drizzle-team@526996b
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodriguespn committed Oct 23, 2024
1 parent 89ee201 commit b813ee5
Show file tree
Hide file tree
Showing 21 changed files with 476 additions and 50 deletions.
1 change: 1 addition & 0 deletions drizzle-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"orm",
"pg",
"mysql",
"singlestore",
"postgresql",
"postgres",
"sqlite",
Expand Down
9 changes: 7 additions & 2 deletions drizzle-kit/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
mySqlViewsResolver,
schemasResolver,
sequencesResolver,
singleStoreViewsResolver,
sqliteViewsResolver,
tablesResolver,
viewsResolver,
Expand Down Expand Up @@ -368,14 +369,15 @@ export const pushMySQLSchema = async (
export const generateSingleStoreDrizzleJson = async (
imports: Record<string, unknown>,
prevId?: string,
casing?: CasingType,
): Promise<SingleStoreSchemaKit> => {
const { prepareFromExports } = await import('./serializer/singlestoreImports');

const prepared = prepareFromExports(imports);

const id = randomUUID();

const snapshot = generateSingleStoreSnapshot(prepared.tables);
const snapshot = generateSingleStoreSnapshot(prepared.tables, prepared.views, casing);

return {
...snapshot,
Expand All @@ -401,8 +403,10 @@ export const generateSingleStoreMigration = async (
squashedCur,
tablesResolver,
columnsResolver,
singleStoreViewsResolver,
validatedPrev,
validatedCur,
'push',
);

return sqlStatements;
Expand All @@ -423,7 +427,7 @@ export const pushSingleStoreSchema = async (
const { sql } = await import('drizzle-orm');

const db: DB = {
query: async (query: string, params?: any[]) => {
query: async (query: string) => {
const res = await drizzleInstance.execute(sql.raw(query));
return res[0] as unknown as any[];
},
Expand All @@ -442,6 +446,7 @@ export const pushSingleStoreSchema = async (
squashedCur,
tablesResolver,
columnsResolver,
singleStoreViewsResolver,
validatedPrev,
validatedCur,
'push',
Expand Down
37 changes: 35 additions & 2 deletions drizzle-kit/src/cli/commands/migrate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ import {
import chalk from 'chalk';
import { render } from 'hanji';
import path, { join } from 'path';
import { SingleStoreSchema, singlestoreSchema, squashSingleStoreScheme } from 'src/serializer/singlestoreSchema';
import {
SingleStoreSchema,
singlestoreSchema,
squashSingleStoreScheme,
ViewSquashed as SingleStoreViewSquashed,
} from 'src/serializer/singlestoreSchema';
import { TypeOf } from 'zod';
import type { CommonSchema } from '../../schemaValidator';
import { MySqlSchema, mysqlSchema, squashMysqlScheme, ViewSquashed } from '../../serializer/mysqlSchema';
Expand Down Expand Up @@ -140,6 +145,28 @@ export const mySqlViewsResolver = async (
}
};

export const singleStoreViewsResolver = async (
input: ResolverInput<SingleStoreViewSquashed & { schema: '' }>,
): Promise<ResolverOutputWithMoved<SingleStoreViewSquashed>> => {
try {
const { created, deleted, moved, renamed } = await promptNamedWithSchemasConflict(
input.created,
input.deleted,
'view',
);

return {
created: created,
deleted: deleted,
moved: moved,
renamed: renamed,
};
} catch (e) {
console.error(e);
throw e;
}
};

export const sqliteViewsResolver = async (
input: ResolverInput<SQLiteView & { schema: '' }>,
): Promise<ResolverOutputWithMoved<SQLiteView>> => {
Expand Down Expand Up @@ -530,11 +557,13 @@ function singleStoreSchemaSuggestions(
export const prepareSingleStorePush = async (
schemaPath: string | string[],
snapshot: SingleStoreSchema,
casing: CasingType | undefined,
) => {
try {
const { prev, cur } = await prepareSingleStoreDbPushSnapshot(
snapshot,
schemaPath,
casing,
);

const validatedPrev = singlestoreSchema.parse(prev);
Expand All @@ -548,6 +577,7 @@ export const prepareSingleStorePush = async (
squashedCur,
tablesResolver,
columnsResolver,
mySqlViewsResolver,
validatedPrev,
validatedCur,
'push',
Expand All @@ -563,6 +593,7 @@ export const prepareSingleStorePush = async (
export const prepareAndMigrateSingleStore = async (config: GenerateConfig) => {
const outFolder = config.out;
const schemaPath = config.schema;
const casing = config.casing;

try {
// TODO: remove
Expand All @@ -572,6 +603,7 @@ export const prepareAndMigrateSingleStore = async (config: GenerateConfig) => {
const { prev, cur, custom } = await prepareSingleStoreMigrationSnapshot(
snapshots,
schemaPath,
casing,
);

const validatedPrev = singlestoreSchema.parse(prev);
Expand All @@ -594,11 +626,12 @@ export const prepareAndMigrateSingleStore = async (config: GenerateConfig) => {
const squashedPrev = squashSingleStoreScheme(validatedPrev);
const squashedCur = squashSingleStoreScheme(validatedCur);

const { sqlStatements, statements, _meta } = await applySingleStoreSnapshotsDiff(
const { sqlStatements, _meta } = await applySingleStoreSnapshotsDiff(
squashedPrev,
squashedCur,
tablesResolver,
columnsResolver,
mySqlViewsResolver,
validatedPrev,
validatedCur,
);
Expand Down
10 changes: 5 additions & 5 deletions drizzle-kit/src/cli/connections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export const preparePostgresDB = async (
);

const db = drizzle(rdsClient, config);
const migrateFn = async (config: string | MigrationConfig) => {
const migrateFn = async (config: MigrationConfig) => {
return migrate(db, config);
};

Expand Down Expand Up @@ -165,7 +165,7 @@ export const preparePostgresDB = async (
: new pg.default.Pool({ ...credentials, ssl, max: 1 });

const db = drizzle(client);
const migrateFn = async (config: string | MigrationConfig) => {
const migrateFn = async (config: MigrationConfig) => {
return migrate(db, config);
};

Expand Down Expand Up @@ -200,7 +200,7 @@ export const preparePostgresDB = async (
: postgres.default({ ...credentials, max: 1 });

const db = drizzle(client);
const migrateFn = async (config: string | MigrationConfig) => {
const migrateFn = async (config: MigrationConfig) => {
return migrate(db, config);
};

Expand Down Expand Up @@ -248,7 +248,7 @@ export const preparePostgresDB = async (
await client.connect();

const db = drizzle(client);
const migrateFn = async (config: string | MigrationConfig) => {
const migrateFn = async (config: MigrationConfig) => {
return migrate(db, config);
};

Expand Down Expand Up @@ -300,7 +300,7 @@ export const preparePostgresDB = async (
neonConfig.webSocketConstructor = ws;

const db = drizzle(client);
const migrateFn = async (config: string | MigrationConfig) => {
const migrateFn = async (config: MigrationConfig) => {
return migrate(db, config);
};

Expand Down
42 changes: 41 additions & 1 deletion drizzle-kit/src/jsonStatements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ import { warning } from './cli/views';
import { CommonSquashedSchema } from './schemaValidator';
import { MySqlKitInternals, MySqlSchema, MySqlSquasher, View as MySqlView } from './serializer/mysqlSchema';
import { Index, MatViewWithOption, PgSchema, PgSquasher, View as PgView, ViewWithOption } from './serializer/pgSchema';
import { SingleStoreKitInternals, SingleStoreSchema, SingleStoreSquasher } from './serializer/singlestoreSchema';
import {
SingleStoreKitInternals,
SingleStoreSchema,
SingleStoreSquasher,
View as SingleStoreView,
} from './serializer/singlestoreSchema';
import {
SQLiteKitInternals,
SQLiteSchemaInternal,
Expand Down Expand Up @@ -561,6 +566,11 @@ export type JsonCreateMySqlViewStatement = {
replace: boolean;
} & Omit<MySqlView, 'columns' | 'isExisting'>;

export type JsonCreateSingleStoreViewStatement = {
type: 'singlestore_create_view';
replace: boolean;
} & Omit<SingleStoreView, 'columns' | 'isExisting'>;

export type JsonCreateSqliteViewStatement = {
type: 'sqlite_create_view';
} & Omit<SqliteView, 'columns' | 'isExisting'>;
Expand Down Expand Up @@ -644,6 +654,10 @@ export type JsonAlterMySqlViewStatement = {
type: 'alter_mysql_view';
} & Omit<MySqlView, 'isExisting'>;

export type JsonAlterSingleStoreViewStatement = {
type: 'alter_singlestore_view';
} & Omit<SingleStoreView, 'isExisting'>;

export type JsonAlterViewStatement =
| JsonAlterViewAlterSchemaStatement
| JsonAlterViewAddWithOptionStatement
Expand Down Expand Up @@ -716,6 +730,8 @@ export type JsonStatement =
| JsonAlterViewStatement
| JsonCreateMySqlViewStatement
| JsonAlterMySqlViewStatement
| JsonCreateSingleStoreViewStatement
| JsonAlterSingleStoreViewStatement
| JsonCreateSqliteViewStatement
| JsonCreateCheckConstraint
| JsonDeleteCheckConstraint
Expand Down Expand Up @@ -3052,6 +3068,24 @@ export const prepareMySqlCreateViewJson = (
};
};

export const prepareSingleStoreCreateViewJson = (
name: string,
definition: string,
meta: string,
replace: boolean = false,
): JsonCreateSingleStoreViewStatement => {
const { algorithm, sqlSecurity, withCheckOption } = SingleStoreSquasher.unsquashView(meta);
return {
type: 'singlestore_create_view',
name: name,
definition: definition,
algorithm,
sqlSecurity,
withCheckOption,
replace,
};
};

export const prepareSqliteCreateViewJson = (
name: string,
definition: string,
Expand Down Expand Up @@ -3178,6 +3212,12 @@ export const prepareMySqlAlterView = (
return { type: 'alter_mysql_view', ...view };
};

export const prepareSingleStoreAlterView = (
view: Omit<SingleStoreView, 'isExisting'>,
): JsonAlterSingleStoreViewStatement => {
return { type: 'alter_singlestore_view', ...view };
};

export const prepareAddCompositePrimaryKeySingleStore = (
tableName: string,
pks: Record<string, string>,
Expand Down
6 changes: 4 additions & 2 deletions drizzle-kit/src/migrationPreparator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ export const prepareMySqlDbPushSnapshot = async (
export const prepareSingleStoreDbPushSnapshot = async (
prev: SingleStoreSchema,
schemaPath: string | string[],
casing: CasingType | undefined,
): Promise<{ prev: SingleStoreSchema; cur: SingleStoreSchema }> => {
const serialized = await serializeSingleStore(schemaPath);
const serialized = await serializeSingleStore(schemaPath, casing);

const id = randomUUID();
const idPrev = prev.id;
Expand Down Expand Up @@ -108,11 +109,12 @@ export const prepareMySqlMigrationSnapshot = async (
export const prepareSingleStoreMigrationSnapshot = async (
migrationFolders: string[],
schemaPath: string | string[],
casing: CasingType | undefined,
): Promise<{ prev: SingleStoreSchema; cur: SingleStoreSchema; custom: SingleStoreSchema }> => {
const prevSnapshot = singlestoreSchema.parse(
preparePrevSnapshot(migrationFolders, drySingleStore),
);
const serialized = await serializeSingleStore(schemaPath);
const serialized = await serializeSingleStore(schemaPath, casing);

const id = randomUUID();
const idPrev = prevSnapshot.id;
Expand Down
5 changes: 3 additions & 2 deletions drizzle-kit/src/serializer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ export const serializeSQLite = async (

export const serializeSingleStore = async (
path: string | string[],
casing: CasingType | undefined,
): Promise<SingleStoreSchemaInternal> => {
const filenames = prepareFilenames(path);

Expand All @@ -96,9 +97,9 @@ export const serializeSingleStore = async (
const { prepareFromSingleStoreImports } = await import('./singlestoreImports');
const { generateSingleStoreSnapshot } = await import('./singlestoreSerializer');

const { tables } = await prepareFromSingleStoreImports(filenames);
const { tables, views } = await prepareFromSingleStoreImports(filenames);

return generateSingleStoreSnapshot(tables);
return generateSingleStoreSnapshot(tables, views, casing);
};

export const prepareFilenames = (path: string | string[]) => {
Expand Down
Loading

0 comments on commit b813ee5

Please sign in to comment.