1.7.0 • Published 7 months ago

@ts-awesome/orm-pg v1.7.0

Weekly downloads
13
License
MIT
Repository
github
Last release
7 months 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.7.0-rc.0

7 months ago

1.7.0

7 months ago

1.6.1

8 months ago

1.6.0

11 months ago

1.6.0-rc5

1 year ago

1.6.0-rc6

1 year ago

1.6.0-rc4

1 year ago

1.6.0-rc2

1 year ago

1.6.0-rc3

1 year ago

1.6.0-rc1

1 year ago

1.6.0-rc0

1 year ago

1.5.5

2 years ago

1.5.3

2 years ago

1.5.0

2 years ago

1.5.10

2 years ago

1.5.9

2 years ago

1.5.8

2 years ago

1.5.7

2 years ago

1.5.0-alpha.17

2 years ago

1.5.0-alpha.13

2 years ago

1.5.0-alpha.12

2 years ago

1.5.0-alpha.15

2 years ago

1.5.0-alpha.14

2 years ago

1.5.0-alpha.11

2 years ago

1.5.0-alpha.10

2 years ago

1.3.0-rc1

3 years ago

1.3.0-rc2

3 years ago

1.2.2

3 years ago

1.3.0-rc0

3 years ago

1.2.1-rc0

3 years ago

1.2.0

3 years ago

1.2.1

3 years ago

1.2.0-rc12

3 years ago

1.2.0-rc9

4 years ago

1.2.0-rc11

4 years ago

1.2.0-rc10

4 years ago

1.2.0-rc8

4 years ago

1.2.0-rc7

4 years ago

1.2.0-rc6

4 years ago

1.2.0-rc5

4 years ago

1.2.0-rc4

4 years ago

1.2.0-rc3

4 years ago

1.2.0-rc2

4 years ago

1.2.0-rc1

4 years ago

1.1.0

4 years ago

1.1.0-rc4

4 years ago

1.1.0-rc3

4 years ago

1.1.0-rc1

4 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago