Run linting rules on your database schema. Read the intro to this idea in this blog post.
Works with Postgres databases.
This will give you errors like these:
public.actor.first_name: error prefer-text-to-varchar : Prefer text to varchar types
Install with:
$ npm i -D schemalint
To run, make sure you are in a folder that has a .schemalintrc.js
configuration file, and type:
$ npx schemalint
Here is an example configuration file:
module.exports = {
connection: {
host: "localhost",
user: "postgres",
password: "postgres",
database: "acme",
charset: "utf8",
},
plugins: ["./custom-rules"],
rules: {
"name-casing": ["error", "snake"],
"name-inflection": ["error", "singular"],
"prefer-jsonb-to-json": ["error"],
"prefer-text-to-varchar": ["error"],
},
schemas: [{ name: "public" }],
ignores: [
{ identifierPattern: "public\\.knex_migrations.*", rulePattern: ".*" },
],
};
Schemalint includes a number of built-in rules, which you can read about here. However, writing rules is easy and you will probably see the real value by doing so. The example folder shows how to write these.