1.1.1 • Published 5 years ago

typeorm-static v1.1.1

Weekly downloads
836
License
0BSD
Repository
github
Last release
5 years ago

typeorm-static

Static TypeORM connection using env vars.

Environment

Usage

Install:

npm i @types/dotenv dotenv reflect-metadata typeorm typeorm-static

Configure SQLite:

npm i sqlite3
cat >.env <<EOF
TYPEORM_DATABASE=db.sqlite3
TYPEORM_DRIVER_TYPE=sqlite
TYPEORM_LOGGING=all
EOF

Or PostgreSQL:

npm i pg
cat >.env <<EOF
TYPEORM_DRIVER_TYPE=postgres
TYPEORM_DRIVER_EXTRA={"ssl": false}
TYPEORM_HOST=localhost
TYPEORM_USERNAME=user
TYPEORM_PASSWORD=1
TYPEORM_DATABASE=user
TYPEORM_LOGGING=
EOF

Enable decorators in tsconfig.json:

{
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true
}

Use:

// bin/index.js
const { config } = require("dotenv");
const { join } = require("path");

config({ path: join(__dirname, "..", ".env") });
// ...
// src/domain/Foobar/Foobar.ts

import { Column, Entity } from "typeorm";
import { AbstractEntity, Bigint } from "typeorm-static";

@Entity()
export class Foobar extends AbstractEntity {
  @Column("bigint", { transformer: Bigint /* Ensure number in postgres. */ })
  public createdAt: number;
}
// src/app/Foobar/FoobarService.ts

import "reflect-metadata";
import { Db, Id } from "typeorm-static";
import { Foobar } from "../../domain/Foobar/Foobar";

export class FoobarService {
  public repository = Db.connection.getRepository(Foobar);

  public async save(foobar: Foobar) {
    foobar.createdAt = Date.now();
    foobar.id = Id();
    foobar = await this.repository.save(foobar);
    return foobar;
  }
}
// src/app/Foobar/FoobarService.test.ts

import "reflect-metadata";
import { Db } from "typeorm-static";
import { Foobar } from "../../domain/Foobar/Foobar";
import { FoobarService } from "./FoobarService";

describe("FoobarService", () => {
  it("saves", async () => {
    await Db.createTestConnection(); // Drops schema.

    // Or...
    await Db.createConnection(); // No schema drop.

    const foobarService = new FoobarService();
    let foobar: Foobar = {};
    foobar = await foobarService.save(foobar);
    console.assert(foobar.id);
  });
});

Develop

git clone https://github.com/nykula/typeorm-static
cd typeorm-static
npm i
npm test

License

0BSD, public domain equivalent.