chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
import { sql } from 'drizzle-orm';
|
||||
import { int, sqliteTable, sqliteView } from 'drizzle-orm/sqlite-core';
|
||||
import { expect, test } from 'vitest';
|
||||
import { diffTestSchemasSqlite } from './schemaDiffer';
|
||||
|
||||
test('create view', async () => {
|
||||
const users = sqliteTable('users', { id: int('id').default(1) });
|
||||
const view = sqliteView('view').as((qb) => qb.select().from(users));
|
||||
const to = {
|
||||
users: users,
|
||||
testView: view,
|
||||
};
|
||||
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite({}, to, []);
|
||||
|
||||
expect(statements.length).toBe(2);
|
||||
expect(statements[0]).toStrictEqual({
|
||||
type: 'sqlite_create_table',
|
||||
tableName: 'users',
|
||||
columns: [{
|
||||
autoincrement: false,
|
||||
default: 1,
|
||||
name: 'id',
|
||||
type: 'integer',
|
||||
primaryKey: false,
|
||||
notNull: false,
|
||||
}],
|
||||
compositePKs: [],
|
||||
uniqueConstraints: [],
|
||||
referenceData: [],
|
||||
checkConstraints: [],
|
||||
});
|
||||
expect(statements[1]).toStrictEqual({
|
||||
type: 'sqlite_create_view',
|
||||
name: 'view',
|
||||
definition: 'select "id" from "users"',
|
||||
});
|
||||
|
||||
expect(sqlStatements.length).toBe(2);
|
||||
expect(sqlStatements[0]).toBe(`CREATE TABLE \`users\` (
|
||||
\t\`id\` integer DEFAULT 1
|
||||
);\n`);
|
||||
expect(sqlStatements[1]).toBe(`CREATE VIEW \`view\` AS select "id" from "users";`);
|
||||
});
|
||||
|
||||
test('drop view', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).as(sql`SELECT * FROM users`),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
};
|
||||
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, []);
|
||||
|
||||
expect(statements.length).toBe(1);
|
||||
expect(statements[0]).toStrictEqual({
|
||||
name: 'view',
|
||||
type: 'drop_view',
|
||||
});
|
||||
|
||||
expect(sqlStatements.length).toBe(1);
|
||||
expect(sqlStatements[0]).toBe(
|
||||
`DROP VIEW \`view\`;`,
|
||||
);
|
||||
});
|
||||
|
||||
test('alter view', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).as(sql`SELECT * FROM users`),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
testView: sqliteView('view', { id: int('id') }).as(sql`SELECT * FROM users WHERE users.id = 1`),
|
||||
};
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, []);
|
||||
|
||||
expect(statements.length).toBe(2);
|
||||
expect(statements[0]).toStrictEqual({
|
||||
name: 'view',
|
||||
type: 'drop_view',
|
||||
});
|
||||
expect(statements[1]).toStrictEqual({
|
||||
name: 'view',
|
||||
type: 'sqlite_create_view',
|
||||
definition: 'SELECT * FROM users WHERE users.id = 1',
|
||||
});
|
||||
|
||||
expect(sqlStatements.length).toBe(2);
|
||||
expect(sqlStatements[0]).toBe(
|
||||
`DROP VIEW \`view\`;`,
|
||||
);
|
||||
expect(sqlStatements[1]).toBe(
|
||||
`CREATE VIEW \`view\` AS SELECT * FROM users WHERE users.id = 1;`,
|
||||
);
|
||||
});
|
||||
|
||||
test('create view with existing flag', async () => {
|
||||
const view = sqliteView('view', {}).existing();
|
||||
const to = {
|
||||
testView: view,
|
||||
};
|
||||
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite({}, to, []);
|
||||
|
||||
expect(statements.length).toBe(0);
|
||||
expect(sqlStatements.length).toBe(0);
|
||||
});
|
||||
|
||||
test('drop view with existing flag', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).existing(),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
};
|
||||
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, []);
|
||||
|
||||
expect(statements.length).toBe(0);
|
||||
expect(sqlStatements.length).toBe(0);
|
||||
});
|
||||
|
||||
test('rename view with existing flag', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).existing(),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
testView: sqliteView('new_view', { id: int('id') }).existing(),
|
||||
};
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, ['view->new_view']);
|
||||
|
||||
expect(statements.length).toBe(0);
|
||||
expect(sqlStatements.length).toBe(0);
|
||||
});
|
||||
|
||||
test('rename view and drop existing flag', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).existing(),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
testView: sqliteView('new_view', { id: int('id') }).as(sql`SELECT * FROM users`),
|
||||
};
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, ['view->new_view']);
|
||||
|
||||
expect(statements.length).toBe(2);
|
||||
expect(statements[0]).toStrictEqual({
|
||||
name: 'view',
|
||||
type: 'drop_view',
|
||||
});
|
||||
expect(statements[1]).toStrictEqual({
|
||||
type: 'sqlite_create_view',
|
||||
name: 'new_view',
|
||||
definition: 'SELECT * FROM users',
|
||||
});
|
||||
|
||||
expect(sqlStatements.length).toBe(2);
|
||||
expect(sqlStatements[0]).toBe(`DROP VIEW \`view\`;`);
|
||||
expect(sqlStatements[1]).toBe(`CREATE VIEW \`new_view\` AS SELECT * FROM users;`);
|
||||
});
|
||||
|
||||
test('rename view and alter ".as"', async () => {
|
||||
const users = sqliteTable('users', {
|
||||
id: int('id').primaryKey({ autoIncrement: true }),
|
||||
});
|
||||
|
||||
const from = {
|
||||
users: users,
|
||||
testView: sqliteView('view', { id: int('id') }).as(sql`SELECT * FROM users`),
|
||||
};
|
||||
const to = {
|
||||
users,
|
||||
testView: sqliteView('new_view', { id: int('id') }).as(sql`SELECT * FROM users WHERE 1=1`),
|
||||
};
|
||||
const { statements, sqlStatements } = await diffTestSchemasSqlite(from, to, ['view->new_view']);
|
||||
|
||||
expect(statements.length).toBe(2);
|
||||
expect(statements[0]).toStrictEqual({
|
||||
name: 'view',
|
||||
type: 'drop_view',
|
||||
});
|
||||
expect(statements[1]).toStrictEqual({
|
||||
type: 'sqlite_create_view',
|
||||
name: 'new_view',
|
||||
definition: 'SELECT * FROM users WHERE 1=1',
|
||||
});
|
||||
|
||||
expect(sqlStatements.length).toBe(2);
|
||||
expect(sqlStatements[0]).toBe('DROP VIEW `view`;');
|
||||
expect(sqlStatements[1]).toBe(`CREATE VIEW \`new_view\` AS SELECT * FROM users WHERE 1=1;`);
|
||||
});
|
||||
Reference in New Issue
Block a user