TypeScript ORM PostgreSQL driver for @ts-awesome/orm
Key features:
- uses yesql for named params
- can run raw SQL or compile IBuildableQuery
import {Pool, PoolConfig} from 'pg';
import {IBuildableQuery, IQueryExecutor, Select} from "@ts-awesome/orm";
import {ISqlQuery, PgCompiler, PgDriver} from "@ts-awesome/orm-pg";
const config: PoolConfig;
const pgPool = new Pool(config);
const driver = new PgDriver(pgPool);
const compiled: ISqlQuery = {
// driver uses yesql
sql: 'SELECT :value',
params: {
value: 1
}
};
const results = await driver.execute(compiled);
import {Pool, PoolConfig} from 'pg';
import {IBuildableQuery, IQueryExecutor, Select} from "@ts-awesome/orm";
import {ISqlQuery, PgCompiler, PgDriver} from "@ts-awesome/orm-pg";
const config: PoolConfig;
const pgPool = new Pool(config);
const compiler = new PgCompiler();
const driver = new PgDriver(pgPool);
const query: IBuildableQuery;
const compiled: ISqlQuery = compiler.compile(query);
const results = await driver.execute(compiled);
import {Pool, PoolConfig} from 'pg';
import {IBuildableQuery, IQueryExecutor, Select} from "@ts-awesome/orm";
import {ISqlQuery, PgCompiler, PgDriver} from "@ts-awesome/orm-pg";
const config: PoolConfig;
const pgPool = new Pool(config);
const compiler = new PgCompiler();
const driver = new PgDriver(pgPool);
const container: Container;
container.bind<IQueryDriver<ISqlQuery>>(SqlQueryDriverSymbol)
.toDynamicValue(() => new PgDriver(pool))
container.bind<IBuildableQueryCompiler<ISqlQuery>>(SqlQueryBuildableQueryCompilerSymbol)
.to(PgCompiler)
This package provides ORM kinds for:
This kind a dummy, but other drivers may have different behaviour
This kind stringifies before write and parses raw value from DB. DB type should be TEXT or equivalent
This kind ensures DB fields is case-insensitive, also makes value lowercase on read/write For more details check here
Depends on citext
extension.
Please run following initialization code on your DB
CREATE EXTENSION citext;
CREATE DOMAIN Email AS citext CHECK ( value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
May be freely distributed under the MIT license.
Copyright (c) 2022 Volodymyr Iatsyshyn and other contributors