UNPKG

@fastify/postgres

Version:
82 lines (64 loc) 1.8 kB
import fastify from 'fastify' import { PoolClient, QueryResult } from 'pg' import { expectType } from 'tsd' // eslint-disable-next-line @typescript-eslint/no-unused-vars import fastifyPostgres, { PostgresDb } from '../../index' const app = fastify() app.register(fastifyPostgres, { connectionString: 'postgres://user:password@host:port/db', }) app.post('/insert-async', async () => { const insertQuery = ` INSERT INTO routes(name) VALUES ('ochakovo') RETURNING 1 + 1 as sum; ` const transactionResult = await app.pg.transact((client) => { expectType<PoolClient>(client) return client.query<{ sum: number }>(insertQuery) }) expectType<QueryResult<{ sum: number }>>(transactionResult) return transactionResult }) app.post('/insert-cb', (_req, reply) => { const insertQuery = ` INSERT INTO routes(name) VALUES ('ochakovo') RETURNING 1 + 1 as sum; ` app.pg.transact( (client) => { expectType<PoolClient>(client) return client.query<{ sum: number }>(insertQuery) }, (error, result) => { expectType<Error | null>(error) expectType<QueryResult<{ sum: number }> | undefined>(result) if (error) { reply.status(500).send(error) return } reply.status(200).send(result) } ) }) app.post('/transact-route', { pg: { transact: true } }, async (req, _reply) => { const insertQuery = ` INSERT INTO routes(name) VALUES ('ochakovo') RETURNING 1 + 1 as sum; ` return req.pg?.query(insertQuery) }) app.post( '/transact-route-alternate', { pg: { transact: 'primary' } }, async (req, _reply) => { const insertQuery = ` INSERT INTO routes(name) VALUES ('ochakovo') RETURNING 1 + 1 as sum; ` return req.pg?.query(insertQuery) } )