2.0.9 • Published 3 years ago

squirrel_orm v2.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Squirrel_orm é um simples ORM feito com orientação a objeto

Aqui vou abordar as informações para utilização da biblioteca.

Conteudo

Primeiro passo é a instalação

$ npm install --save mysql2 squirrel_orm

obs: a biblioteca usa o mysql2 é uma dependência de utilização

Definição do BaseModel

O base model é importante para que você não precise ficar adicinando a configuração de conexão em todos os modelos que você vier a criar.

const { Model } = require('squirrel_orm');

module.exports = class BaseModel extends Model {
  constructor() { 
    // tem suporte as configurações do mysql2
    // pois as opções passadas aqui são utilizadas para criação
    // da conexão
    super({
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: '',
      database: 'teste'
    })
  }
}

Definição do model

A definição do model é bastante simples, segue uma pequena lógica.

  • table - tabela a qual vai ser acessado
  • fields - definição dos campos(colunas) da tabela
  • relation - você deve colocar o nome da classe a qual se faz referência e o mode dela
  • cast - conversão de tipos, por exemplo: array ou json

Definição da tabela

const BaseModel = require('./BaseModel');

module.exports = class User extends BaseModel {
  table = 'user';

  constructor() { super() }
}

Definição dos fields

// exemplo
const BaseModel = require('./BaseModel');

module.exports = class User extends BaseModel {
  table = 'user';
  fields = {
    "id": {
      type: this.DataTypes.INTERGER,
      auto_increment: true,
      nullable: true,
      primary_key: true
    },
    "acesso": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "chave": {
      type: this.DataTypes.STRING,
      nullable: false
    }
  };

  constructor() { super() }
}
// exemplo
const BaseModel = require('./BaseModel');

module.exports = class Pessoa extends BaseModel {
  table = 'pessoa';
  fields = {
    "id": {
      type: this.DataTypes.INTERGER,
      auto_increment: true,
      nullable: true,
      primary_key: true
    },
    "nome": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "email": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "user_id": {
      type: this.DataTypes.INTERGER,
      nullable: false,
      foreign_key: true
    }
  };

  constructor() { super() }
}

definição da relation

// exemplo
const BaseModel = require('./BaseModel');

module.exports = class User extends BaseModel {
  table = 'user';
  fields = {
    "id": {
      type: this.DataTypes.INTERGER,
      auto_increment: true,
      nullable: true,
      primary_key: true
    },
    "acesso": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "chave": {
      type: this.DataTypes.STRING,
      nullable: false
    }
  };

  relation: {
    pessoa: require('./Pessoa.js')
  }

  constructor() { super() }

  // retorna promise<Collection>
  // exemplo de relação onde user é referênciado em pessoa
  pessoa() {
    return this.hasMany('user_id', this.relation.pessoa);
  }
}
// exemplo
const BaseModel = require('./BaseModel');

module.exports = class Pessoa extends BaseModel {
  table = 'pessoa';
  fields = {
    "id": {
      type: this.DataTypes.INTERGER,
      auto_increment: true,
      nullable: true,
      primary_key: true
    },
    "nome": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "email": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "user_id": {
      type: this.DataTypes.INTERGER,
      nullable: false,
      foreign_key: true
    }
  };

  relation: {
    user: require('./User.js')
  }

  constructor() { super() }

  // retorna promise<Model>
  // exemplo de relação onde pessoa referência user
  user() {
    return this.belongsTo('user_id', this.relation.user);
  }
}

Definição do cast

// exemplo
const BaseModel = require('./BaseModel');

module.exports = class Pessoa extends BaseModel {
  table = 'pessoa';
  fields = {
    "id": {
      type: this.DataTypes.INTERGER,
      auto_increment: true,
      nullable: true,
      primary_key: true
    },
    "nome": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "email": {
      type: this.DataTypes.STRING,
      nullable: false
    },
    "user_id": {
      type: this.DataTypes.INTERGER,
      nullable: false,
      foreign_key: true
    },
    "perfil": {
      type: this.DataTypes.JSON,
      nullable: true
    }
  };

  cast = {
    perfil: "json"
  }

  constructor() { super() }
}
2.0.9

3 years ago

2.0.8

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.3

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago