Skip to content

Commit

Permalink
fixes #62
Browse files Browse the repository at this point in the history
  • Loading branch information
koskimas committed Feb 3, 2022
1 parent f5b017f commit f63674a
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 15 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kysely",
"version": "0.16.9",
"version": "0.16.10",
"description": "Type safe SQL query builder",
"repository": {
"type": "git",
Expand Down
4 changes: 2 additions & 2 deletions src/kysely.ts
Original file line number Diff line number Diff line change
Expand Up @@ -440,13 +440,13 @@ export class ConnectionBuilder<DB> {
const connection = await this.#props.driver.acquireConnection()
const connectionProvider = new SingleConnectionProvider(connection)

const transaction = new Kysely<DB>({
const db = new Kysely<DB>({
...this.#props,
executor: this.#props.executor.withConnectionProvider(connectionProvider),
})

try {
return await callback(transaction)
return await callback(db)
} finally {
await this.#props.driver.releaseConnection(connection)
}
Expand Down
16 changes: 9 additions & 7 deletions src/query-compiler/default-query-compiler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,9 @@ export class DefaultQueryCompiler
protected override visitSelectQuery(node: SelectQueryNode): void {
const wrapInParens =
this.parentNode !== undefined &&
!InsertQueryNode.is(this.parentNode) &&
!CreateViewNode.is(this.parentNode) &&
!UnionNode.is(this.parentNode) &&
!InsertQueryNode.is(this.parentNode)
!UnionNode.is(this.parentNode)

if (wrapInParens) {
this.append('(')
Expand Down Expand Up @@ -442,13 +442,15 @@ export class DefaultQueryCompiler
}

protected override visitRaw(node: RawNode): void {
node.sqlFragments.forEach((sql, i) => {
this.append(sql)
const { sqlFragments, params } = node

if (node.params.length > i) {
this.visitNode(node.params[i])
for (let i = 0; i < sqlFragments.length; ++i) {
this.append(sqlFragments[i])

if (params.length > i) {
this.visitNode(params[i])
}
})
}
}

protected override visitOperator(node: OperatorNode): void {
Expand Down
6 changes: 3 additions & 3 deletions src/schema/alter-table-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { IdentifierNode } from '../operation-node/identifier-node.js'
import { OperationNodeSource } from '../operation-node/operation-node-source.js'
import { OnModifyForeignAction } from '../operation-node/references-node.js'
import { RenameColumnNode } from '../operation-node/rename-column-node.js'
import { TableNode } from '../operation-node/table-node.js'
import { CompiledQuery } from '../query-compiler/compiled-query.js'
import { Compilable } from '../util/compilable.js'
import { freeze } from '../util/object-utils.js'
Expand Down Expand Up @@ -41,6 +40,7 @@ import {
DefaultValueExpression,
parseDefaultValueExpression,
} from '../parser/default-value-parser.js'
import { parseTable } from '../parser/table-parser.js'

/**
* This builder can be used to create a `alter table` query.
Expand All @@ -56,7 +56,7 @@ export class AlterTableBuilder {
return new AlterTableExecutor({
...this.#props,
alterTableNode: AlterTableNode.cloneWith(this.#props.alterTableNode, {
renameTo: TableNode.create(newTableName),
renameTo: parseTable(newTableName),
}),
})
}
Expand Down Expand Up @@ -172,7 +172,7 @@ export class AlterTableBuilder {
constraintBuilder: new ForeignKeyConstraintBuilder(
ForeignKeyConstraintNode.create(
columns.map(ColumnNode.create),
TableNode.create(targetTable),
parseTable(targetTable),
targetColumns.map(ColumnNode.create),
constraintName
)
Expand Down
4 changes: 2 additions & 2 deletions src/schema/create-table-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import { QueryId } from '../util/query-id.js'
import { freeze, noop } from '../util/object-utils.js'
import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js'
import { ColumnNode } from '../operation-node/column-node.js'
import { TableNode } from '../operation-node/table-node.js'
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js'
import {
DataTypeExpression,
Expand All @@ -23,6 +22,7 @@ import { PrimaryConstraintNode } from '../operation-node/primary-constraint-node
import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js'
import { CheckConstraintNode } from '../operation-node/check-constraint-node.js'
import { AnyRawBuilder } from '../util/type-utils.js'
import { parseTable } from '../parser/table-parser.js'

/**
* This builder can be used to create a `create table` query.
Expand Down Expand Up @@ -262,7 +262,7 @@ export class CreateTableBuilder<TB extends string, C extends string = never>
new ForeignKeyConstraintBuilder(
ForeignKeyConstraintNode.create(
columns.map(ColumnNode.create),
TableNode.create(targetTable),
parseTable(targetTable),
targetColumns.map(ColumnNode.create),
constraintName
)
Expand Down
33 changes: 33 additions & 0 deletions test/node/src/schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,39 @@ for (const dialect of BUILT_IN_DIALECTS) {
await builder.execute()
})

if (dialect === 'postgres') {
it('should support schemas in foreign key target table', async () => {
await ctx.db.schema
.createTable('test2')
.addColumn('c', 'integer')
.addColumn('d', 'integer')
.addPrimaryKeyConstraint('primary_key', ['c', 'd'])
.execute()

const builder = ctx.db.schema
.createTable('test')
.addColumn('a', 'integer')
.addColumn('b', 'integer')
.addForeignKeyConstraint(
'foreign_key',
['a', 'b'],
'public.test2',
['c', 'd']
)

testSql(builder, dialect, {
postgres: {
sql: 'create table "test" ("a" integer, "b" integer, constraint "foreign_key" foreign key ("a", "b") references "public"."test2" ("c", "d"))',
parameters: [],
},
mysql: NOT_SUPPORTED,
sqlite: NOT_SUPPORTED,
})

await builder.execute()
})
}

it('should create a table with a foreign key constraint that has an `on update` statement', async () => {
await ctx.db.schema
.createTable('test2')
Expand Down

0 comments on commit f63674a

Please sign in to comment.