/******************************************************************************************** * ADONIS CHEATSHEET * https://adonisjs.com/ ********************************************************************************************/ /******************************************************************************************** * AVAILABLE CLI COMMANDS ********************************************************************************************/ build // Compile typescript code to Javascript. Optionally watch for file changes invoke // Invoke post install instructions on a given AdonisJs package serve // Compile typescript code to Javascript and start the HTTP server // Dump dump:rcfile // Dump contents of .adonisrc.json file along with defaults // Generate generate:key // Generate a new APP_KEY secret generate:manifest // Generate manifest file to execute ace commands // List list:routes // List application routes // Make make:command // Make a new ace command make:controller // Make a new HTTP controller make:middleware // Make a new middleware make:migration // Make a new migration make:provider // Make a new IoC container provider make:validator // Make a new validator make:view // Make a new view template // Migrations make:migration // Create a new migration file. migration:run // Run all pending migrations. migration:rollback // Rollback last set of migrations. migration:refresh // Rollback all migrations to the 0 batch then re-run them from the start. migration:reset // Rollback all migrations to the 0 batch. migration:status // Get the status of all the migrations. /******************************************************************************************** * ROUTING ********************************************************************************************/ Route.get(url, closure) // Register route for GET verb Route.post(url, closure) // Register route for POST verb Route.put(url, closure) // Register route for PUT verb Route.patch(url, closure) // Register route for PATCH verb Route.delete(url, closure) // Register route for DELETED verb Route.any(url, closure) // Register route for all HTTP verbs Route.on('/').render('welcome') // Render a view directly Route.route('/', () => {}, ['GET', 'POST', 'PUT']) // Register route for multiple verbs Route.get('users', closure).as('users.index') // Assign a unique name to the route Route.get('users', closure).formats(['json', 'html'], true) // Force client to define the route format Route.resource('users', 'UserController') // Define a resource route for CRUD operations Route.resource('users', 'UserController').apiOnly() // Remove create and edit routes Route.resource('users', 'UserController').only(['index']) // Keeps only the passed routes Route.resource('users', 'UserController').except(['index']) //Keeps all routes except the passed routes. Route.group(() => {}) // Define a group of routes Route.group(() => {}).middleware(['auth']) // Attach a middleware Route.group(() => {}).formats(['json']) // Define response formats Route.group(() => {}).prefix('api/v1') // Define a prefix for a group of routes Route.group(() => {}).namespace('Admin') // Prefix the namespace of the bound controller Route.group(() => {}).domain('blog.sthg.com') // Specify which domain goup routes belong to /******************************************************************************************** * VALIDATOR * https://indicative-v5.adonisjs.com/ ********************************************************************************************/ const indicative = require("indicative"); const rules = { email: "required|email|unique:users", password: "required|min:6|max:30", }; // Indivative methods indicative.validate(data, rules); // Validate data with defined rules indicative.validateAll(data, rules); // Same as validate but continues to validate all fields, whereas the validate method stops on first error indicative.is.email(emailAddress); // Raw validator indicative.extend("exists", existsFn); // Add your own rules indicative.sanitize(data, rules); // Returns a new object with sanitized data: indicative.sanitizor.normalizeEmail(emailAddress); // Raw sanitizor // Validations above // Makes sure the value provided by the end user is above the expected value. accepted // Ensures that the field under validation is accepted. after // Ensures the value of the field is after the expected date. afterOffsetOf // Ensures the date is after a given offset of a given time period. alpha // Makes sure the field under validation is alpha only. alphaNumeric // Makes sure the field under validation is alpha numeric only. array // Ensure the value is a valid array. Also this validation will never validate the size of array. before // Ensures the value of field under validation is before a given date. beforeOffsetOf // Ensures the date is before a given offset of a given time period. boolean // Ensures the value of a field is a boolean. confirmed // Ensures a field value as confirmed using a _confirmation convention. This is mainly used for password confirmation field. date // Ensures the field under validation is a valid date. The value can be a date object or a valid date string. dateFormat // Ensures the date or date time is valid as the one of the defined formats. different // Ensures the value of the field under validation is always different from the targeted field value. email // Ensures the field under validation is a valid email format. endsWith // Ensure the value of field under validation ends with a certain substr. This validation will also trim whitespaces before making the check. equals // Ensures 2 values are lossely same. This validation will not check for the same type, but instead checks for the same value. in // Ensures the value of a given field matches one of expected values. includes // Ensures the value of field under validation contains a given substring. integer // Ensures the value is a valid integer. Also string representation of a number will return true. ip // Ensures the value is a valid ip address as per ipv4 and ipv6 specs. ipv4 // Ensures the value is a valid ip address as per ipv4 spec only. ipv6 // Ensures the value is a valid ip address as per ipv6 spec only. json // Ensures the value of field under validation is safe to be parsed using JSON.parse method. max // Ensures the length of a string or array is not greater than the defined length. min // Ensures the length of a string or array is not is not less than the expected length notEquals // Makes sure that the value of field under validation is not same as the defined value. notIn // Makes sure that the value of field under validation is not from one of the defined values. number // Makes sure that the value of field under validation is a valid number. The validation will pass for floats too, since it uses typeof internally. object // Ensures the value of field under validation is a valid Javascript object. The validation will fail for Arrays, though they are objects too in Javascript. range // Ensures the value of field under validation is under a given range. The values will be cased to Number automatically. regex // Ensures the value of field under validation, passes the regex test. The regex can be defined as a string or a RegExp object. required // Ensures the value of field under validation is not empty (i.e. not an empty object, empty array, empty string, null or undefined). requiredIf // The field is checked for required validation, when expected field exists. requiredWhen // The field is checked for required validation, when expected field value is same as the expected value. requiredWithAll // Ensures the field is required when all other fields have non-empty values. requiredWithAny // Ensures the field is required when any of the other fields have non-empty values. requiredWithoutAll // Ensures the field is required when all of the other fields has empty values. requiredWithoutAny // Ensures the field is required when any of the other fields has empty values. same // Ensures the value of 2 fields are same. startsWith // Ensure the value of field under validation starts with a certain substr. This validation will also trim whitespaces before making the check. string // Ensures the value is a string. under // Ensures the value of a field is under a certain value. All values will be casted to Number. url // Ensures the value is a valid URL format. /******************************************************************************************** * DATABASE HOOKS * https://adonisjs.com/docs/4.1/database-hooks ********************************************************************************************/ beforeCreate // Before creating a new record. afterCreate // After a new record is created. beforeUpdate // Before updating a record. afterUpdate // After a record has been updated. beforeSave // Before creating or updating a new record. afterSave // After a new record has been created or updated. beforeDelete // Before removing a record. afterDelete // After a record is removed. afterFind // After a single record is fetched from the database. afterFetch // After the fetch method is executed.The hook method receives an array of model instances. afterPaginate // After the paginate method is executed.The hook method receives two arguments: an array of model instances and the pagination metadata.