MagicalStrangeQuark / ecommerce-adonis

Development of an Ecommerce Using the Adonis.js Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Development of an Ecommerce Using the 🚀Adonis.js Framework

License License License License

🥂 Framework Installation
  npm install -g @adonisjs/cli
  adonis --version
  adonis new app --api-only
🍾 Start
  cd app
    
  adonis serve --dev
🍻 Open in Browser
  http://127.0.0.1:3333
🌂 MySQL Connection

Models

Configurando o banco de dados

Manjaro
  sudo systemctl start mariadb

  sudo mysql --user root
Windows
  Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"
  mysqlsh
  \connect root@localhost

  \sql
MySQL
  CREATE DATABASE adonis;

  CREATE USER 'adonis'@'localhost' IDENTIFIED WITH mysql_native_password;

  FLUSH PRIVILEGES;

  ALTER USER 'adonis'@'localhost' IDENTIFIED BY 'secret';

  FLUSH PRIVILEGES;

  GRANT ALL PRIVILEGES ON adonis.* TO 'adonis'@'localhost';

  FLUSH PRIVILEGES;

  select host, user, authentication_string from mysql.user;

  USE adonis;
Configurando .env: ajustar os campos conforme a configuração prévia efetuada na base de dados
  DB_CONNECTION=mysql

  DB_HOST=127.0.0.1

  DB_PORT=3306

  DB_USER=adonis

  DB_PASSWORD=secret

  DB_DATABASE=adonis
No arquivo app\config\database.js, alterar as linhas para caso não haja conexão definida em .env
  connection: Env.get('DB_CONNECTION', 'mysql');
Packages
Ao adicionarmos um novo pacote, no diretório start/app.js, na constante provider adicionar o caminho para o mesmo.
  npm i --save mysql
  adonis install @adonisjs/mail
  adonis install @adonisjs/validator
  adonis install @adonisjs/websocket
  npm i adonis-acl --save
  adonis acl:setup
  adonis install adonis-bumblebee
Criação do arquivo responsável pela persistência dos logs de erros
  adonis make:ehandler

No arquivo app\app\Exceptions\Handler.js, instanciar a constante Logger, da seguinte forma:

  const Logger = use('Logger');

Ainda no arquivo Handle.js, modificar o método report da seguinte forma:

  async report(error, {
    request
  }) {
    if (error.status >= 500) {
      Logger.error(error.message, {
        stack: error.stack,
        message: error.message,
        status: error.status,
        name: error.name
      });
    }
  }

Em app\config\app.js, dentro do atributo logger, usar transport como file, pois queremos persistir o erro num arquivo.

Migrations
  adonis make:migration Image [create]

  adonis make:migration UserImageFk [select]

  adonis make:migration Category [create]

  adonis make:migration Product [create]

  adonis make:migration Coupon [create]

  adonis make:migration Order [create]

  adonis make:migration CouponOrder [create]

  adonis make:migration OrderItem [create]

  adonis make:migration CouponUser [create]

  adonis make:migration CouponProduct [create]

  adonis make:migration PasswordReset [create]
  adonis migration:run
Models
  adonis make:model PasswordReset

  adonis make:model Image

  adonis make:model Category

  adonis make:model Product

  adonis make:model Coupon

  adonis make:model Discount

  adonis make:model Order

  adonis make:model OrderItem

Escondendo campos ao realizar uma consulta à base de dados

Dentro do modelo da classe em questão, é possível chamar o método hidden, retornando os campos que não serão retornados na busca.

Exemplo: Não queremos retornar o campo password, nesse caso, o código seria o seguinte:

  static get hidden() {
    return ['password']
  }
Formatação dos campos relativo à datas

Exemplo: Queremos que o campo expires_at seja tratado como uma data ao salvar na nossa base de dados.

  static get dates() {
    return super.dates.concat(['expires_at'])
  }
Hooks
  adonis make:hook Order

  adonis make:hook OrderItem
Controllers
Views

About

Development of an Ecommerce Using the Adonis.js Framework


Languages

Language:JavaScript 99.6%Language:Shell 0.4%