Skip to content

add sql linter #390

Description

@mxfactorial

current

the sql files in migrations/schema, migrations/seed and migrations/testseed are not linted

expected

1. lint sql files with https://hub.docker.com/r/sqlfluff/sqlfluff

example commands:

i) single file

docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --dialect postgres migrations/schema/000001_account.up.sql

ii) directories

docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --dialect postgres migrations/schema

2. using the --fix flag adds zero changes to linted sql files

example:
assuming migrations/schema/test.sql

CREATE TABLE account (
    name character varying(255) NOT NULL PRIMARY KEY,
    password text,
    created_by character varying(255), -- NOT NULL == subaccount
    created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP
);

docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --dialect postgres migrations/schema/test.sql returns 0 errors

3. add a migrations/.sqlfluff config file with contents:

[sqlfluff]

dialect = postgres

now commands require a --config instead of a --dialect flag

docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --config migrations/.sqlfluff migrations/schema/test.sql

doc: https://docs.sqlfluff.com/en/stable/reference/cli.html

4. add "sql linting" section in migrations/README.md documenting example lint commands

example:

docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --config migrations/.sqlfluff migrations/schema
docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --config migrations/.sqlfluff migrations/seed
docker run -it --rm -v $PWD:/sql sqlfluff/sqlfluff:3.2.5 lint --config migrations/.sqlfluff migrations/testseed

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions