1.0.40 • Published 3 months ago

@bestapps/microservice-entity v1.0.40

Weekly downloads
-
License
ISC
Repository
github
Last release
3 months ago

#Contents

Examples

See test/model and test/tests

Configuration

You need to setup:

  • sql model
  • config model
  • registry model
  • app model
  • your models extended from EntitySQLModel

See all below.

SQLModel

Copy paste from test/model/SQLModel.ts

Config and Registry Models

Requiring to normal work of models

import configModel from '@bestapps/microservice-entity/dist/model/ConfigModel';
import RegistryModel from '@bestapps/microservice-entity/dist/model/RegistryModel';


configModel.setCacheConfig(config.cache);
RegistryModel.set('configModel', configModel);

where config.cache - is cache config from your config file eg:

    "cache": {
        "type": "memory",
        "prefix": "micro:entity",
        "models": [],
        "redis": {
            "connection": {
                "port": "6379",
                "host": "localhost",
                "login": "",
                "password": ""
            }
        }
    }

APP Model

Responsible for models loading, requires EVENT_SQL_CONNECTED to be sent

In your code just do:

import appModel from "@bestapps/microservice-entity/dist/model/AppModel";
appModel.init();

Entity Models

Examples is in test/model

Basic scheme

import EntitySQLModel from "@bestapps/microservice-entity/dist/model/entity/EntitySQLModel";

import Main from "../entity/Main";

let options: any = {
    table: 'main',
    entity: Main,
    schemas: [
        {
            field: 'parent',
            source: {
                id: 'pid',
                model: 'this',
            },
            isLazy: true,
            optional: true,
        },
        {
            field: 'name'
        },
        {
            field: 'data',
            type: 'json',
        },
    ]
};

class MainModel extends EntitySQLModel {

}

export default new MainModel(options);

where type can be:

  • json (data in Object)
  • uid (indicates that field is we using for uid)
  • created (when entity created in unix timestamp format)

where Main is

import Entity from "@bestapps/microservice-entity/dist/entity/Entity";

class Main extends Entity {

    private _name: string;
    private _parent: Main;
    private _data: any;

    constructor(props) {
        super(props);
        this._name = props.name;
        this._parent = props.parent;
        this._data = props.data;
    }

    get data(): any {
        return this._get('_data');
    }

    set data(value: any) {
        this._data = value;
    }
    get parent(): Main {
        return this._get('_parent');
    }

    set parent(value: Main) {
        this._parent = value;
    }
    get name(): string {
        return this._get('_name');
    }

    set name(value: string) {
        this._name = value;
    }
}

export default Main;

Unit tests

  1. Create special MySQL DB for project
  2. mysqldump data from data/init.sql
  3. Setup local config in config/ directory:
  cp test.example.json local.json
  1. Fill there db category with all required data

Now you can test everything:

    npm run unit

If you want to test some script you can do for example:

    npm run unit -- create.test.ts
1.0.39

3 months ago

1.0.38

3 months ago

1.0.40

3 months ago

1.0.37

5 months ago

1.0.19

8 months ago

1.0.18

9 months ago

1.0.17

9 months ago

1.0.16

9 months ago

1.0.9

10 months ago

1.0.8

10 months ago

1.0.7

10 months ago

1.0.6

10 months ago

1.0.22

8 months ago

1.0.21

8 months ago

1.0.20

8 months ago

1.0.26

8 months ago

1.0.25

8 months ago

1.0.24

8 months ago

1.0.23

8 months ago

1.0.29

8 months ago

1.0.28

8 months ago

1.0.27

8 months ago

1.0.33

7 months ago

1.0.11

10 months ago

1.0.32

7 months ago

1.0.10

10 months ago

1.0.31

8 months ago

1.0.30

8 months ago

1.0.15

9 months ago

1.0.14

9 months ago

1.0.35

6 months ago

1.0.13

9 months ago

1.0.34

6 months ago

1.0.12

10 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.5

11 months ago

1.0.4

11 months ago

1.0.3

11 months ago

1.0.0

11 months ago