Skip to content

gradii/fedaco

Repository files navigation

Fedaco Orm

Build Status

No short description right now. can play fedaco here https://github.com/gradii/play-fedaco

doc can see eloquent

How To Use It

  • setup a connection
    const db = new DatabaseConfig();
    db.addConnection({
      'driver'  : 'sqlite',
      'database': ':memory:'
    });
    db.bootFedaco();
    db.setAsGlobal();
  • define a model
    @Table({
      tableName: 'user'
    })
    class User extends Model {
      @PrimaryColumn
      id;
      
      @Column()
      email;
    
      @Column()
      name;
    
      @Column()
      age;
    
      @CreatedAtColumn()
      created_at;
    
      @UpdateAtColumn()
      updated_at;
    }
  • fetch data
    const list = await User.createQuery().get();

Create Table

create a user table.

const schemaBuilder = Model.getConnectionResolver()
  .connection(connectionName)
  .getSchemaBuilder();
;

await schemaBuilder().create('users', table => {
  table.increments('id');
  table.string('email').withUnique();
  table.string('name');
  table.string('age');
});

Features

  • wrapped driver. unify all driver query api
  • compile query builder to sql
  • decorate to define model
  • soft delete
  • use relationship to link model
  • relation can set dynamic constrain
  • sqlite and mysql support

Progressing

  • postgres full support
  • mssql full support
  • migration

Notice

ecma class with field declaration not in constructor is not support. es2016 is support but es2022 is not. field declaration can use declare keyword to declare field in constructor, then the field will not generated in class when enabled es2022 like this

  @Table({
    tableName: 'user'
  })
  class User extends Model {
    @PrimaryColumn()
    declare id;
  }