0.25.2 • Published 5 months ago

@vendredix/database-pg v0.25.2

Weekly downloads
68
License
MIT
Repository
-
Last release
5 months ago

@vendredix/database-pg

NPM version Downloads

PostgreSQL database module in TypeScript with custom transformers and language service.

TODO: Readme.

Examples

/* entities.ts */
import {Database, Column, constants} from "@vendredix/database-pg";
const {DATE_NOW_STRING} = constants;

@Database.Table()
export class AppGroup {
  @Database.AutoIncrement()
  @Database.PrimaryKey()
  groupId?: number;

  @Database.Column()
  name?: string;

  @Database.Column()
  description?: string;

  @Database.Column()
  created?: Date = DATE_NOW_STRING;
}


@Database.Table()
export class AppUser {
  @Database.AutoIncrement()
  @Database.PrimaryKey()
  userId: number;

  @Database.Unique()
  userName: string;

  @Database.Column()
  email: string | null;

  @Database.ForeignKey(AppGroup)
  @Database.Column()
  groupId: number = 1;

  @Database.Column()
  activated: boolean = false;
  
  @Database.Column({typeName: Column.TYPES.JSONB})
  preferences?: object | null;

  @Database.Method({
    language: "plpgsql",
    name: "user_hasPermission",
  })
  public static hasPermission(@Database.Parameter() userId: number, @Database.Parameter() permissionId: string): Promise<boolean> {
    return <never>`
    DECLARE res boolean;
    BEGIN
      RETURN TRUE;
    END;`;
  }

  public hasPermission(permissionId: string): Promise<boolean> {
    return AppUser.hasPermission(this.userId, permissionId);
  }
}


/* example.ts */
import {db} from "./database";

const QS_GroupUsers = db.compile<"groupId">(c => db.appUser
  .select("userName")
  .where(user => user.groupId === c.groupid)
);
const group1Users = await QS_GroupUsers.prepare({groupId: 1}).toListAsync();

/* Transpiles into:
const QS_GroupUsers = db.appUser
    .select("userName")
    .$where()`${_a => _a._columnAccess(0, "groupId")} = ${_a => _a.$id(c => c.groupid)}`
    .compile();
const group1Users = await QS_GroupUsers.prepare({ groupId: 1 }).toListAsync();
*/

const groupids = [1,2,3];
const users = await db.appUser.select()
  .join(db.appGroup)
  .where((user, group) => user.userName.toLowerCase() !== "test" && group.groupId in groupids)
  .toListAsync();

/* Transpiles into:
const groupids = [1,2,3];
const users = await db.appUser.select()
    .join(db.appGroup)
    .$where()`(LOWER(${_b => _b._columnAccess(0, "userName")}) <> 'test') AND (${_b => _b._columnAccess(1, "groupId")} IN ${groupids})`
    .toListAsync();
*/


await db.appUser.update()
  .setValues((user) => {
    user.someName = `User_${user.groupid}_${user.userName}`;
  })
  .where((user) => user.someName !== "")
  .executeAsync();

/* Transpiles into:
await db.appUser.update()
    .$setValues`${_a => _a._columnAccess(0, "someName")} = CONCAT('User_', ${_a => _a._columnAccess(0, "groupid")}, '_', ${_a => _a._columnAccess(0, "userName")})`
    .$where()`${_b => _b._columnAccess(0, "someName")} <> ''`
    .executeAsync();
*/
0.25.2

5 months ago

0.25.1

5 months ago

0.25.0

5 months ago

0.24.5

1 year ago

0.24.4

1 year ago

0.24.3

2 years ago

0.24.2

2 years ago

0.24.1

2 years ago

0.24.0

2 years ago

0.23.4

2 years ago

0.23.3

2 years ago

0.23.2

3 years ago

0.23.1

3 years ago

0.23.0

3 years ago

0.22.1

3 years ago

0.22.0

3 years ago

0.21.4

3 years ago

0.21.3

3 years ago

0.21.2

3 years ago

0.21.1

3 years ago

0.21.0

3 years ago

0.21.0-alpha.1

3 years ago

0.20.1

4 years ago

0.20.0

4 years ago

0.19.1

4 years ago

0.19.0

4 years ago

0.18.0

4 years ago

0.17.0

4 years ago

0.16.1

5 years ago

0.16.0

5 years ago

0.15.0

5 years ago

0.14.0

5 years ago

0.13.3

5 years ago

0.13.2

5 years ago

0.13.1

5 years ago

0.13.0

5 years ago

0.12.0

5 years ago

0.11.3

5 years ago

0.11.2

5 years ago

0.11.1

5 years ago

0.11.0

5 years ago

0.10.1

5 years ago

0.10.0

5 years ago

0.9.6

5 years ago

0.9.5

6 years ago

0.9.4

6 years ago

0.9.3

6 years ago

0.9.2

6 years ago

0.9.1

6 years ago

0.9.0

6 years ago

0.8.3

6 years ago

0.8.2

6 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.4

6 years ago

0.7.3

6 years ago

0.7.2

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.0

6 years ago

0.5.7

6 years ago

0.5.6

6 years ago

0.5.5

6 years ago

0.5.4

6 years ago

0.5.3

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.14

7 years ago

0.2.13

7 years ago

0.2.12

7 years ago

0.2.11

7 years ago

0.2.10

7 years ago

0.2.9

7 years ago

0.2.8

7 years ago

0.2.7

7 years ago

0.2.6

7 years ago

0.2.5

7 years ago

0.2.5-rc.1

7 years ago

0.2.5-rc.0

7 years ago