Skip to content

Commit c08e2dd

Browse files
committed
Migrations working
1 parent 82db3c5 commit c08e2dd

9 files changed

Lines changed: 53 additions & 35 deletions

File tree

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ module.exports = {
22
transform: {
33
"\\.ts$": "esbuild-runner/jest",
44
},
5+
setupFilesAfterEnv: ["./test/setup.js"],
56
};

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"scripts": {
1515
"clean": "rm -rf dist && rm -rf test/dist",
1616
"build": "yarn clean && yarn build:esm && yarn build:cjs && ./module-fixup.sh",
17+
"test": "AWS_SDK_LOAD_CONFIG=1 jest",
1718
"build:esm": "tsc -p tsconfig-esm.json",
1819
"build:cjs": "tsc -p tsconfig-cjs.json"
1920
},
@@ -25,7 +26,8 @@
2526
"esbuild": "^0.13.6",
2627
"esbuild-runner": "^2.2.1",
2728
"jest": "^27.2.5",
28-
"kysely": "^0.6.2"
29+
"kysely": "0.6.2",
30+
"perf_hooks": "^0.0.1"
2931
},
3032
"peerDependencies": {
3133
"aws-sdk": "^2.1008.0",

src/data-api-dialect.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type DataApiDialectConfig = {
1212
};
1313

1414
export class DataApiDialect implements Dialect {
15-
#config: DataApiDialectConfig;
15+
readonly #config: DataApiDialectConfig;
1616

1717
constructor(config: DataApiDialectConfig) {
1818
this.#config = config;
@@ -28,7 +28,6 @@ export class DataApiDialect implements Dialect {
2828
}
2929

3030
createIntrospector(db: Kysely<any>): DatabaseIntrospector {
31-
console.log("Introspector");
3231
return new PostgresIntrospector(db);
3332
}
3433
}

src/data-api-query-compiler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Field } from "aws-sdk/clients/rdsdataservice";
2-
import { DefaultQueryCompiler } from "kysely";
2+
import { PostgresQueryCompiler } from "kysely";
33

4-
export class DataApiQueryCompiler extends DefaultQueryCompiler {
4+
export class DataApiQueryCompiler extends PostgresQueryCompiler {
55
protected override appendValue(value: any) {
66
const name = this.numBindings;
77
this.append(this.getCurrentParameterPlaceholder());

test/harness.ts

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import RDSDataService from "aws-sdk/clients/rdsdataservice";
22
import { Kysely } from "kysely";
33
import { DataApiDialect } from "../src";
44
import { DataApiDriverConfig } from "../src/data-api-driver";
5+
import path from "path";
56

67
const TEST_DATABASE = "scratch";
78

@@ -47,7 +48,7 @@ export async function reset() {
4748
await opts.client
4849
.executeStatement({
4950
sql: `
50-
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = '${TEST_DATABASE}'`,
51+
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = '${TEST_DATABASE}'`,
5152
database: "postgres",
5253
secretArn: opts.secretArn,
5354
resourceArn: opts.resourceArn,
@@ -72,27 +73,5 @@ export async function reset() {
7273
})
7374
.promise();
7475

75-
await db.schema
76-
.createTable("person")
77-
.addColumn("id", "integer", (col) => col.increments().primaryKey())
78-
.addColumn("first_name", "varchar")
79-
.addColumn("last_name", "varchar")
80-
.addColumn("gender", "varchar(50)")
81-
.execute();
82-
83-
await db.schema
84-
.createTable("pet")
85-
.addColumn("id", "integer", (col) => col.increments().primaryKey())
86-
.addColumn("name", "varchar", (col) => col.notNull().unique())
87-
.addColumn("owner_id", "integer", (col) =>
88-
col.references("person.id").onDelete("cascade")
89-
)
90-
.addColumn("species", "varchar")
91-
.execute();
92-
93-
await db.schema
94-
.createIndex("pet_owner_id_index")
95-
.on("pet")
96-
.column("owner_id")
97-
.execute();
76+
await db.migration.migrateToLatest(path.resolve("./test/migrations"));
9877
}

test/migrations/test-migration1.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
async function up(db) {
2+
await db.schema
3+
.createTable("person")
4+
.addColumn("id", "integer", (col) => col.increments().primaryKey())
5+
.addColumn("first_name", "varchar")
6+
.addColumn("last_name", "varchar")
7+
.addColumn("gender", "varchar(50)")
8+
.execute();
9+
10+
await db.schema
11+
.createTable("pet")
12+
.addColumn("id", "integer", (col) => col.increments().primaryKey())
13+
.addColumn("name", "varchar", (col) => col.notNull().unique())
14+
.addColumn("owner_id", "integer", (col) =>
15+
col.references("person.id").onDelete("cascade")
16+
)
17+
.addColumn("species", "varchar")
18+
.execute();
19+
20+
await db.schema
21+
.createIndex("pet_owner_id_index")
22+
.on("pet")
23+
.column("owner_id")
24+
.execute();
25+
}
26+
27+
async function down(db) {
28+
await db.schema.dropTable("person").execute();
29+
await db.schema.dropTable("pet").execute();
30+
}
31+
32+
module.exports = {
33+
up,
34+
down,
35+
};

test/setup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global.performance = require("perf_hooks").performance;

test/temporary.test.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@ import { reset, db } from "./harness";
22

33
jest.setTimeout(1000 * 60);
44

5-
beforeAll(async () => {
6-
await reset();
7-
});
8-
95
beforeEach(async () => {
10-
await db.deleteFrom("person").execute();
6+
await reset();
117
});
128

139
const person = {

yarn.lock

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2003,7 +2003,7 @@ kleur@^3.0.3:
20032003
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
20042004
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
20052005

2006-
kysely@^0.6.2:
2006+
kysely@0.6.2:
20072007
version "0.6.2"
20082008
resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.6.2.tgz#becb93baeb62b54e49ea5b752524428ab78fc0c6"
20092009
integrity sha512-TAQp59GT9R4VGISI/l15BouKcTbuTJfaLygOquDfIZ7U8u7BUGFOfhpOZlpq81YmrRd+ZMuTKibmYQ76MpZRlQ==
@@ -2210,6 +2210,11 @@ path-parse@^1.0.6:
22102210
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
22112211
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
22122212

2213+
perf_hooks@^0.0.1:
2214+
version "0.0.1"
2215+
resolved "https://registry.yarnpkg.com/perf_hooks/-/perf_hooks-0.0.1.tgz#253e7e18b71fcc0390fd3afb2cd7cf1685df040c"
2216+
integrity sha512-qG/D9iA4KDme+KF4vCObJy6Bouu3BlQnmJ8jPydVPm32NJBD9ZK1ZNgXSYaZKHkVC1sKSqUiLgFvAZPUiIEnBw==
2217+
22132218
picocolors@^1.0.0:
22142219
version "1.0.0"
22152220
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"

0 commit comments

Comments
 (0)