Development of an Ecommerce Using the 🚀Adonis.js Framework
npm install -g @adonisjs/cli
adonis --version
adonis new app --api-only
cd app
adonis serve --dev
http://127.0.0.1:3333
sudo systemctl start mariadb
sudo mysql --user root
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"
mysqlsh
\connect root@localhost
\sql
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;
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=adonis
DB_PASSWORD=secret
DB_DATABASE=adonis
connection: Env.get('DB_CONNECTION', 'mysql');
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
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.
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
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
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']
}
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'])
}
adonis make:hook Order
adonis make:hook OrderItem