Skip to content

Commit

Permalink
Add schemalint github actioni for best practice reference
Browse files Browse the repository at this point in the history
  • Loading branch information
xbgmsharp committed Oct 22, 2023
1 parent 229c219 commit dbeb64c
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
55 changes: 55 additions & 0 deletions .github/workflows/db-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Linting rules on database schema.

on:
pull_request:
paths:
- 'initdb/**'
branches:
- 'main'
push:
branches:
- 'main'
paths:
- 'initdb/**'
tags:
- "*"
workflow_dispatch:

jobs:
schemalint:
name: schemalint
runs-on: ubuntu-latest
steps:
- name: Check out the source
uses: actions/checkout@v3

- name: Set env
run: cp .env.example .env

- name: Pull Docker images
run: docker-compose pull db api

- name: Run PostgSail Database & schemalint
# Environment variables
env:
# The hostname used to communicate with the PostgreSQL service container
PGHOST: localhost
PGPORT: 5432
PGDATABASE: signalk
PGUSER: username
PGPASSWORD: password
run: |
set -eu
source .env
docker-compose stop || true
docker-compose rm || true
docker-compose up -d db && sleep 30 && docker-compose up -d api && sleep 5
docker-compose ps -a
echo ${PGSAIL_API_URL}
curl ${PGSAIL_API_URL}
npm i -D schemalint
npx schemalint
- name: Show the logs
if: always()
run: |
docker-compose logs
22 changes: 22 additions & 0 deletions .schemalintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
module.exports = {
connection: {
host: process.env.PGHOST,
user: process.env.PGUSER,
password: process.env.PGPASSWORD,
database: process.env.PGDATABASE,
charset: "utf8",
},

rules: {
"name-casing": ["error", "snake"],
"prefer-jsonb-to-json": ["error"],
"prefer-text-to-varchar": ["error"],
"prefer-timestamptz-to-timestamp": ["error"],
"prefer-identity-to-serial": ["error"],
"name-inflection": ["error", "singular"],
},

schemas: [{ name: "public" }, { name: "api" }],

ignores: [],
};

0 comments on commit dbeb64c

Please sign in to comment.