1.6.0-rc1 • Published 23 days ago

@ts-awesome/orm-pg v1.6.0-rc1

Weekly downloads
13
License
MIT
Repository
github
Last release
23 days ago

@ts-awesome/orm-pg

TypeScript ORM PostgreSQL driver for @ts-awesome/orm

Key features:

  • uses yesql for named params
  • can run raw SQL or compile IBuildableQuery

Standalone

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);

Vanilla use with ORM

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);

Use with IoC container

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)

Kinds

This package provides ORM kinds for:

DB_UID

This kind a dummy, but other drivers may have different behaviour

DB_JSON

This kind stringifies before write and parses raw value from DB. DB type should be TEXT or equivalent

DB_EMAIL

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])?)*$' );

License

May be freely distributed under the MIT license.

Copyright (c) 2022 Volodymyr Iatsyshyn and other contributors

1.6.0-rc1

23 days ago

1.6.0-rc0

2 months ago

1.5.5

9 months ago

1.5.3

9 months ago

1.5.0

10 months ago

1.5.10

9 months ago

1.5.9

9 months ago

1.5.8

9 months ago

1.5.7

9 months ago

1.5.0-alpha.17

11 months ago

1.5.0-alpha.13

11 months ago

1.5.0-alpha.12

11 months ago

1.5.0-alpha.15

11 months ago

1.5.0-alpha.14

11 months ago

1.5.0-alpha.11

11 months ago

1.5.0-alpha.10

11 months ago

1.3.0-rc1

2 years ago

1.3.0-rc2

2 years ago

1.2.2

2 years ago

1.3.0-rc0

2 years ago

1.2.1-rc0

2 years ago

1.2.0

2 years ago

1.2.1

2 years ago

1.2.0-rc12

2 years ago

1.2.0-rc9

3 years ago

1.2.0-rc11

3 years ago

1.2.0-rc10

3 years ago

1.2.0-rc8

3 years ago

1.2.0-rc7

3 years ago

1.2.0-rc6

3 years ago

1.2.0-rc5

3 years ago

1.2.0-rc4

3 years ago

1.2.0-rc3

3 years ago

1.2.0-rc2

3 years ago

1.2.0-rc1

3 years ago

1.1.0

3 years ago

1.1.0-rc4

3 years ago

1.1.0-rc3

3 years ago

1.1.0-rc1

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago