typeorm-static
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

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.

Dependents (0)

Package Sidebar

Install

npm i typeorm-static

Weekly Downloads

264

Version

1.1.1

License

0BSD

Unpacked Size

9.83 kB

Total Files

18

Last publish

Collaborators

  • makepost