AdonisJS Cheatsheet
rpcx-api
digunakan untuk server latihan API nantinya
1. Initial project
1
npm init adonis-ts-app@latest rpcx-api
2. install packages
1
npm install @adonisjs/lucid @Adonisjs/auth phc-argon2
paket lainnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Mysql >5; mariadb >=10
npm i mysql2
# postgresql
npm i pg
# Sqlite3
npm i sqlite3
# Oracle
npm i oracledb
# MSSQL
npm i tedious
3. Configure
- Configure Lucid
1
2
3
4
5
6
7
node ace configure @adonisjs/lucid
# CREATE: config/database.ts
# UPDATE: .env,.env.example
# UPDATE: tsconfig.json { types += "@adonisjs/lucid" }
# UPDATE: .adonisrc.json { commands += "@adonisjs/lucid/build/commands" }
# UPDATE: .adonisrc.json { providers += "@adonisjs/lucid" }
- configure env.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// env.ts
import Env from '@ioc:Adonis/Core/Env'
export default Env.rules({
HOST: Env.schema.string({ format: 'host' }),
PORT: Env.schema.number(),
APP_KEY: Env.schema.string(),
APP_NAME: Env.schema.string(),
DRIVE_DISK: Env.schema.enum(['local'] as const),
NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
MYSQL_HOST: Env.schema.string({ format: 'host' }),
MYSQL_PORT: Env.schema.number(),
MYSQL_USER: Env.schema.string(),
MYSQL_PASSWORD: Env.schema.string.optional(),
MYSQL_DB_NAME: Env.schema.string(),
})
create mysql database
1
2
mysql -u root
create database `rpcx-db`;
- configure .env
1
2
3
4
5
6
7
8
9
10
11
PORT=3333
HOST=0.0.0.0
NODE_ENV=development
APP_KEY=AgmGqITkUEu9JANAafY3gYfMkO2IWctW
DRIVE_DISK=local
DB_CONNECTION=mysql
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=
MYSQL_DB_NAME=rpcx-db
- configure Auth
Configure Auth
1
node ace configure @adonisjs/auth
- git init
1
2
3
git init
git add .
git commit -m "Initial API, lucid, & auth"
Migration
Modif
run migration
1
node ace migration:run
Seed
make seeder
1
node ace make:seeder User
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# // database/seeder/user.ts
import BaseSeeder from '@ioc:Adonis/Lucid/Seeder'
import User from 'App/Models/User'
export default class UserSeeder extends BaseSeeder {
public async run () {
await User.createMany([
{
email: 'virk@adonisjs.com',
password: 'secret',
},
{
email: 'romain@adonisjs.com',
password: 'supersecret'
}
])
}
}
run seed
1
2
node ace db:seed
# node ace db:seed --files './database/seeders/User.ts'