Skip to main content

PostgreSQL

PostgreSQL database integration for Stratix.

Installation​

stratix add @stratix/postgres

Configuration​

import { PostgresPlugin } from '@stratix/postgres';

const app = await ApplicationBuilder.create()
.usePlugin(new PostgresPlugin({
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432'),
database: process.env.DB_NAME!,
user: process.env.DB_USER!,
password: process.env.DB_PASSWORD!,
pool: {
min: 2,
max: 10
},
ssl: process.env.NODE_ENV === 'production'
}))
.build();

Repository Implementation​

export class PostgresProductRepository implements IProductRepository {
constructor(private db: Database) {}

async save(product: Product): Promise<void> {
await this.db('products')
.insert({
id: product.id.toString(),
name: product.name,
price: product.price
})
.onConflict('id')
.merge();
}

async findById(id: string): Promise<Product | null> {
const row = await this.db('products')
.where({ id })
.first();

return row ? this.toDomain(row) : null;
}

private toDomain(row: any): Product {
return Product.create({
name: row.name,
price: row.price
});
}
}

Next Steps​