Skip to content

Commit

Permalink
feat(slonik): add createDatabase module (#233)
Browse files Browse the repository at this point in the history
* feat(slonik): add createDatabase

* feat(slonik): update slonik
  • Loading branch information
dipendraupreti committed Feb 17, 2023
1 parent 0521332 commit 5f30db3
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 25 deletions.
26 changes: 26 additions & 0 deletions packages/slonik/src/createDatabase.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { createPool } from "slonik";

import createClientConfiguration from "./factories/createClientConfiguration";

import type { Database } from "./types";
import type { ClientConfiguration, DatabasePool } from "slonik";

const createDatabase = async (
connectionString: string,
clientConfiguration?: Partial<ClientConfiguration>
): Promise<Database> => {
const pool: DatabasePool = await createPool(
connectionString,
createClientConfiguration(clientConfiguration)
);

const database: Database = {
connect: pool.connect.bind(pool),
pool,
query: pool.query.bind(pool),
};

return database;
};

export default createDatabase;
19 changes: 10 additions & 9 deletions packages/slonik/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,6 @@ declare module "@dzangolab/fastify-config" {

export { default } from "./plugin";

export type {
Database,
FilterInput,
Service,
SlonikConfig,
SortInput,
SqlFactory,
} from "./types";

export {
createFilterFragment,
createLimitFragment,
Expand All @@ -52,5 +43,15 @@ export {
createWhereIdFragment,
} from "./sql";

export { default as createDatabase } from "./createDatabase";
export { default as BaseService } from "./service";
export { default as DefaultSqlFactory } from "./sqlFactory";

export type {
Database,
FilterInput,
Service,
SlonikConfig,
SortInput,
SqlFactory,
} from "./types";
26 changes: 10 additions & 16 deletions packages/slonik/src/slonik.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// [OP 2023-JAN-28] Copy/pasted from https://github.com/spa5k/fastify-slonik/blob/main/src/index.ts
import fastifyPlugin from "fastify-plugin";
import { createPool, sql } from "slonik";
import { sql } from "slonik";

import createDatabase from "./createDatabase";

import type { Database } from "./types";
import type { FastifyInstance } from "fastify";
import type { DatabasePool } from "slonik";
import type {
Expand Down Expand Up @@ -38,28 +41,19 @@ declare module "fastify" {

const plugin = async (fastify: FastifyInstance, options: SlonikOptions) => {
const { connectionString, clientConfiguration } = options;
let pool: DatabasePool;
try {
pool = await createPool(connectionString, clientConfiguration);
} catch (error) {
fastify.log.error("🔴 Error happened while connecting to Postgres DB");
throw new Error(error as string);
}
let db: Database;

try {
await pool.connect(async () => {
db = await createDatabase(connectionString, clientConfiguration);

await db.pool.connect(async () => {
fastify.log.info("✅ Connected to Postgres DB");
});
} catch {
} catch (error) {
fastify.log.error("🔴 Error happened while connecting to Postgres DB");
throw new Error(error as string);
}

const db = {
connect: pool.connect.bind(pool),
pool,
query: pool.query.bind(pool),
};

if (!fastify.hasDecorator("slonik") && !fastify.hasDecorator("sql")) {
fastify.decorate("slonik", db);
fastify.decorate("sql", sql);
Expand Down

0 comments on commit 5f30db3

Please sign in to comment.