0.0.18 • Published 2 years ago

@theogonic/gaea v0.0.18

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Gaea

A general entity library written in Typescript, powered by TypeORM and PostgreSQL(JSONB), best to be used with Nestjs

NPM Version NPM Downloads NPM License

Features

  1. No need to write SQL schema, everything is defined in Typescript
  2. No need to run SQL migration if schema change
  3. Powerful listing and filtering, including full text search

Motivation

This project aims to provide an out-of-box entity library (an easy way talking to the database) used in rapid development/prototype stage considered to the highly fuzzy demands and usecases.

Usage

Migration (only required in first-time)

export TYPEORM_CONNECTION=postgres
export TYPEORM_URL="<your postgres database>"
export TYPEORM_MIGRATIONS="node_modules/@theogonic/gaea/assets/migrations/*.ts"

# run migration (powered by Typeorm)
$ node -r ts-node/register ./node_modules/typeorm/cli.js migration:run

Declare Entity

import { BaseGeneralObject } from '@theogonic/gaea';

export class UserEntity extends BaseGeneralObject  {
  name: string
  profile: {
    email: string
    phoneNumber: string
  };
}

Declare DAO (Data Access Object)

import { BaseGeneralObjectDao } from '@theogonic/gaea';

export class UserEntityDao extends BaseGeneralObjectDao<UserEntity> {
  target = UserEntity;
}

Manipulate it

Nestjs

import { GeneralObjectModule } from '@theogonic/gaea';
import { TypeOrmModule } from "@nestjs/typeorm";

@Module({
  imports: [
    TypeOrmModule,
    // since GeneralObjectModule only used TypeOrmModule.forFeature, so TypeOrmModle is required (epected to have proper database connection)
    GeneralObjectModule  
  ],
  providers: [
    UserService,
    UserEntityDao 
  ]
})
export class UserModule {}
import { Injectable } from "@nestjs/common";

@Injectable()
export class UserService {
  constructor(private readonly userDao: UserEntityDao){}

  getUserById(id: string): UserEntity {
    return this.userDao.listOne(id);
  }
}

Manually

const userDao = new UserEntityDao(/* Typeorm Entity Manager*/) 

userDao.listOne(...)
0.0.17

2 years ago

0.0.18

2 years ago

0.0.10

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.15

2 years ago

0.0.9

2 years ago

0.0.16

2 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.3

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago