UNPKG

nest-leader-election

Version:
72 lines (71 loc) 1.87 kB
import { EntitySchema, Table } from "typeorm"; export const createLeaderLeaseEntity = (schema = "public") => { return new EntitySchema({ name: "LeaderLease", tableName: "leader_lease", schema: schema, columns: { id: { type: "integer", primary: true, unique: true, }, leaderId: { name: "leader_id", type: "text", nullable: false, }, expiresAt: { name: "expires_at", type: "timestamptz", nullable: false, }, createdAt: { name: "created_at", type: "timestamptz", default: () => "CURRENT_TIMESTAMP", nullable: false, }, }, checks: [ { expression: `expires_at > created_at`, }, ], }); }; export const createLeaderLeaseTable = (schema = "public") => { return new Table({ schema: schema, name: `leader_lease`, columns: [ { name: "id", type: "int", isPrimary: true, isUnique: true, }, { name: "leader_id", type: "text", isNullable: false, }, { name: "expires_at", type: "timestamptz", isNullable: false, }, { name: "created_at", type: "timestamptz", isNullable: false, default: "NOW()", }, ], checks: [ { expression: "expires_at > created_at", }, ], }); };