Skip to content

Commit

Permalink
code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
koskimas committed Nov 24, 2021
1 parent 6aa309a commit 129ecc0
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 72 deletions.
6 changes: 3 additions & 3 deletions src/operation-node/create-schema-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ export const CreateSchemaNode = freeze({
})
},

cloneWithModifier(
cloneWith(
createSchema: CreateSchemaNode,
modifier: CreateSchemaNodeModifier
params: CreateSchemaNodeParams
): CreateSchemaNode {
return freeze({
...createSchema,
modifier,
...params,
})
},
})
53 changes: 2 additions & 51 deletions src/operation-node/create-table-node.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { freeze } from '../util/object-utils.js'
import { CheckConstraintNode } from './check-constraint-node.js'
import { OperationNode } from './operation-node.js'
import { TableNode } from './table-node.js'
import { PrimaryConstraintNode } from './primary-constraint-node.js'
import { UniqueConstraintNode } from './unique-constraint-node.js'
import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js'
import { ConstraintNode } from './constraint-node.js'
import { ColumnDefinitionNode } from './column-definition-node.js'

Expand Down Expand Up @@ -54,54 +50,9 @@ export const CreateTableNode = freeze({
})
},

cloneWithPrimaryKeyConstraint(
cloneWithConstraint(
createTable: CreateTableNode,
constraintName: string,
columns: string[]
): CreateTableNode {
const constraint = PrimaryConstraintNode.create(columns, constraintName)

return freeze({
...createTable,
constraints: createTable.constraints
? freeze([...createTable.constraints, constraint])
: freeze([constraint]),
})
},

cloneWithUniqueConstraint(
createTable: CreateTableNode,
constraintName: string,
columns: string[]
): CreateTableNode {
const constraint = UniqueConstraintNode.create(columns, constraintName)

return freeze({
...createTable,
constraints: createTable.constraints
? freeze([...createTable.constraints, constraint])
: freeze([constraint]),
})
},

cloneWithCheckConstraint(
createTable: CreateTableNode,
constraintName: string,
sql: string
): CreateTableNode {
const constraint = CheckConstraintNode.create(sql, constraintName)

return freeze({
...createTable,
constraints: createTable.constraints
? freeze([...createTable.constraints, constraint])
: freeze([constraint]),
})
},

cloneWithForeignKeyConstraint(
createTable: CreateTableNode,
constraint: ForeignKeyConstraintNode
constraint: ConstraintNode
): CreateTableNode {
return freeze({
...createTable,
Expand Down
1 change: 0 additions & 1 deletion src/operation-node/on-duplicate-key-node.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { freeze } from '../util/object-utils.js'
import { ColumnNode } from './column-node.js'
import { ColumnUpdateNode } from './column-update-node.js'
import { OperationNode } from './operation-node.js'

Expand Down
4 changes: 3 additions & 1 deletion src/operation-node/operation-node-source.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ export interface OperationNodeSource {
toOperationNode(): OperationNode
}

export function isOperationNodeSource(obj: any): obj is OperationNodeSource {
export function isOperationNodeSource(
obj: unknown
): obj is OperationNodeSource {
return isObject(obj) && isFunction(obj.toOperationNode)
}
3 changes: 2 additions & 1 deletion src/operation-node/operation-node-transformer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -583,11 +583,12 @@ export class OperationNodeTransformer {
kind: 'AlterTableNode',
table: this.transformNode(node.table),
renameTo: this.transformNode(node.renameTo),
renameColumn: this.transformNode(node.renameColumn),
setSchema: this.transformNode(node.setSchema),
renameColumn: this.transformNode(node.renameColumn),
addColumn: this.transformNode(node.addColumn),
dropColumn: this.transformNode(node.dropColumn),
alterColumn: this.transformNode(node.alterColumn),
modifyColumn: this.transformNode(node.modifyColumn),
addConstraint: this.transformNode(node.addConstraint),
dropConstraint: this.transformNode(node.dropConstraint),
}
Expand Down
2 changes: 1 addition & 1 deletion src/query-compiler/default-query-compiler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@ const SELECT_MODIFIER_SQL: Record<SelectModifier, string> = {
ForNoKeyUpdate: 'for no key update',
ForUpdate: 'for update',
ForShare: 'for share',
NoWait: 'no wait',
NoWait: 'nowait',
SkipLocked: 'skip locked',
}

Expand Down
4 changes: 2 additions & 2 deletions src/schema/create-schema-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ export class CreateSchemaBuilder implements OperationNodeSource, Compilable {
ifNotExists(): CreateSchemaBuilder {
return new CreateSchemaBuilder({
...this.#props,
createSchemaNode: CreateSchemaNode.cloneWithModifier(
createSchemaNode: CreateSchemaNode.cloneWith(
this.#props.createSchemaNode,
'IfNotExists'
{ modifier: 'IfNotExists' }
),
})
}
Expand Down
20 changes: 10 additions & 10 deletions src/schema/create-table-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import {
DataTypeExpression,
parseDataTypeExpression,
} from '../parser/data-type-parser.js'
import { PrimaryConstraintNode } from '../operation-node/primary-constraint-node.js'
import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js'
import { CheckConstraintNode } from '../operation-node/check-constraint-node.js'

/**
* This builder can be used to create a `create table` query.
Expand Down Expand Up @@ -128,10 +131,9 @@ export class CreateTableBuilder<TB extends string, C extends string = never>
): CreateTableBuilder<TB, C> {
return new CreateTableBuilder({
...this.#props,
createTableNode: CreateTableNode.cloneWithPrimaryKeyConstraint(
createTableNode: CreateTableNode.cloneWithConstraint(
this.#props.createTableNode,
constraintName,
columns
PrimaryConstraintNode.create(columns, constraintName)
),
})
}
Expand All @@ -153,10 +155,9 @@ export class CreateTableBuilder<TB extends string, C extends string = never>
): CreateTableBuilder<TB, C> {
return new CreateTableBuilder({
...this.#props,
createTableNode: CreateTableNode.cloneWithUniqueConstraint(
createTableNode: CreateTableNode.cloneWithConstraint(
this.#props.createTableNode,
constraintName,
columns
UniqueConstraintNode.create(columns, constraintName)
),
})
}
Expand All @@ -178,10 +179,9 @@ export class CreateTableBuilder<TB extends string, C extends string = never>
): CreateTableBuilder<TB, C> {
return new CreateTableBuilder({
...this.#props,
createTableNode: CreateTableNode.cloneWithCheckConstraint(
createTableNode: CreateTableNode.cloneWithConstraint(
this.#props.createTableNode,
constraintName,
checkExpression
CheckConstraintNode.create(checkExpression, constraintName)
),
})
}
Expand Down Expand Up @@ -233,7 +233,7 @@ export class CreateTableBuilder<TB extends string, C extends string = never>

return new CreateTableBuilder({
...this.#props,
createTableNode: CreateTableNode.cloneWithForeignKeyConstraint(
createTableNode: CreateTableNode.cloneWithConstraint(
this.#props.createTableNode,
builder.toOperationNode()
),
Expand Down
27 changes: 27 additions & 0 deletions test/src/select.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,33 @@ for (const dialect of BUILT_IN_DIALECTS) {
{ first_name: 'Arnold' },
])
})

for (const [methods, sql] of [
[['forUpdate'], 'for update'],
[['forShare'], 'for share'],
[['forNoKeyUpdate'], 'for no key update'],
[['forKeyShare'], 'for key share'],
[['forUpdate', 'noWait'], 'for update nowait'],
[['forUpdate', 'skipLocked'], 'for update skip locked'],
] as const) {
it(`should support "${sql}"`, async () => {
let query = ctx.db.selectFrom('person').selectAll()

for (const method of methods) {
query = query[method]()
}

testSql(query, dialect, {
postgres: {
sql: `select * from "person" ${sql}`,
parameters: [],
},
mysql: NOT_SUPPORTED,
})

await query.execute()
})
}
}

it('should use an aggregate function in a select call', async () => {
Expand Down
7 changes: 5 additions & 2 deletions test/src/test-setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ const PLUGINS: KyselyPlugin[] = []

if (process.env.TEST_TRANSFORMER) {
console.log('running tests with a transformer')
PLUGINS.push(createNoopPlugin())
// Add a noop transformer using a plugin to make sure that the
// OperationNodeTransformer base class is implemented correctly
// and all nodes and properties get cloned by default.
PLUGINS.push(createNoopTransformerPlugin())
}

const DB_CONFIGS: PerDialect<KyselyConfig> = {
Expand Down Expand Up @@ -307,7 +310,7 @@ function getIdFromInsertResult<T>(result: any): T {
}
}

function createNoopPlugin(): KyselyPlugin {
function createNoopTransformerPlugin(): KyselyPlugin {
const transformer = new OperationNodeTransformer()

return {
Expand Down

0 comments on commit 129ecc0

Please sign in to comment.