chdsbd / kodiak

🔮 A bot to automatically update and merge GitHub PRs
https://kodiakhq.com
GNU Affero General Public License v3.0
1.03k stars 65 forks source link

ci(web_api): replace isort,flake8,pylint with ruff #872

Closed sbdchd closed 1 year ago

sbdchd commented 1 year ago

Trying to speed things up a bit and get a better editor experience.

sbdchd commented 1 year ago

rel: https://github.com/charliermarsh/ruff/issues/3981

squawk-squawk[bot] commented 1 year ago

Squawk Report

🚒 51 violations across 25 file(s)


web_api/migrations/0001_initial.sql

BEGIN;
--
-- Create model User
--
CREATE TABLE "user" ("created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "id" uuid NOT NULL PRIMARY KEY, "github_id" integer NOT NULL, "github_login" varchar(255) NOT NULL, "github_access_token" varchar(255) NOT NULL);
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0001_initial.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model User
   4 | --
   5 | CREATE TABLE "user" ("created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "id" uuid NOT NULL PRIMARY KEY, "github_id" integer NOT NULL, "github_login" varchar(255) NOT NULL, "github_access_token" varchar(255) NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0001_initial.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model User
   4 | --
   5 | CREATE TABLE "user" ("created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "id" uuid NOT NULL PRIMARY KEY, "github_id" integer NOT NULL, "github_login" varchar(255) NOT NULL, "github_access_token" varchar(255) NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0002_githubevent.sql

BEGIN;
--
-- Create model GitHubEvent
--
CREATE TABLE "github_event" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "event_name" varchar(255) NOT NULL, "payload" jsonb NOT NULL);
CREATE INDEX "github_event_event_name_a62034ba" ON "github_event" ("event_name");
CREATE INDEX "github_event_event_name_a62034ba_like" ON "github_event" ("event_name" varchar_pattern_ops);
COMMIT;

🚒 Rule Violations (1)

web_api/migrations/0002_githubevent.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model GitHubEvent
   4 | --
   5 | CREATE TABLE "github_event" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "event_name" varchar(255) NOT NULL, "payload" jsonb NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0003_auto_20200215_1733.sql

BEGIN;
--
-- Create model Account
--
CREATE TABLE "account" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_id" integer NOT NULL UNIQUE, "github_account_id" integer NOT NULL UNIQUE, "github_account_login" varchar(255) NOT NULL UNIQUE, "github_account_type" varchar(255) NOT NULL, "payload" jsonb NOT NULL);
--
-- Alter field github_id on user
--
ALTER TABLE "user" ADD CONSTRAINT "user_github_id_7c8b0129_uniq" UNIQUE ("github_id");
--
-- Alter field github_login on user
--
ALTER TABLE "user" ADD CONSTRAINT "user_github_login_a404431c_uniq" UNIQUE ("github_login");
CREATE INDEX "user_github_login_a404431c_like" ON "user" ("github_login" varchar_pattern_ops);
--
-- Create model AccountMembership
--
CREATE TABLE "account_membership" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "account_id" uuid NOT NULL, "user_id" uuid NOT NULL);
CREATE INDEX "account_github_account_login_3e06cb60_like" ON "account" ("github_account_login" varchar_pattern_ops);
ALTER TABLE "account_membership" ADD CONSTRAINT "account_membership_account_id_069c9421_fk_account_id" FOREIGN KEY ("account_id") REFERENCES "account" ("id") DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE "account_membership" ADD CONSTRAINT "account_membership_user_id_9be63abc_fk_user_id" FOREIGN KEY ("user_id") REFERENCES "user" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "account_membership_account_id_069c9421" ON "account_membership" ("account_id");
CREATE INDEX "account_membership_user_id_9be63abc" ON "account_membership" ("user_id");
COMMIT;

🚒 Rule Violations (5)

web_api/migrations/0003_auto_20200215_1733.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model Account
   4 | --
   5 | CREATE TABLE "account" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_id" integer NOT NULL UNIQUE, "github_account_id" integer NOT NULL UNIQUE, "github_account_login" varchar(255) NOT NULL UNIQUE, "github_account_type" varchar(255) NOT NULL, "payload" jsonb NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0003_auto_20200215_1733.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model Account
   4 | --
   5 | CREATE TABLE "account" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_id" integer NOT NULL UNIQUE, "github_account_id" integer NOT NULL UNIQUE, "github_account_login" varchar(255) NOT NULL UNIQUE, "github_account_type" varchar(255) NOT NULL, "payload" jsonb NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0003_auto_20200215_1733.sql:6:1: warning: disallowed-unique-constraint

   6 | --
   7 | -- Alter field github_id on user
   8 | --
   9 | ALTER TABLE "user" ADD CONSTRAINT "user_github_id_7c8b0129_uniq" UNIQUE ("github_id");

  note: Adding a UNIQUE constraint requires an ACCESS EXCLUSIVE lock which blocks reads.
  help: Create an index CONCURRENTLY and create the constraint using the index.

web_api/migrations/0003_auto_20200215_1733.sql:10:1: warning: disallowed-unique-constraint

  10 | --
  11 | -- Alter field github_login on user
  12 | --
  13 | ALTER TABLE "user" ADD CONSTRAINT "user_github_login_a404431c_uniq" UNIQUE ("github_login");

  note: Adding a UNIQUE constraint requires an ACCESS EXCLUSIVE lock which blocks reads.
  help: Create an index CONCURRENTLY and create the constraint using the index.

web_api/migrations/0003_auto_20200215_1733.sql:14:1: warning: require-concurrent-index-creation

  14 | CREATE INDEX "user_github_login_a404431c_like" ON "user" ("github_login" varchar_pattern_ops);

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0004_auto_20200215_2015.sql

BEGIN;
--
-- Rename field github_id on account to github_installation_id
--
ALTER TABLE "account" RENAME COLUMN "github_id" TO "github_installation_id";
COMMIT;

🚒 Rule Violations (1)

web_api/migrations/0004_auto_20200215_2015.sql:2:1: warning: renaming-column

   2 | --
   3 | -- Rename field github_id on account to github_installation_id
   4 | --
   5 | ALTER TABLE "account" RENAME COLUMN "github_id" TO "github_installation_id";

  note: Renaming a column may break existing clients.

web_api/migrations/0005_auto_20200215_2156.sql

BEGIN;
--
-- Alter field github_account_id on account
--
--
-- Alter field github_account_login on account
--
--
-- Alter field github_installation_id on account
--
--
-- Alter field github_access_token on user
--
--
-- Alter field github_id on user
--
--
-- Alter field github_login on user
--
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0006_remove_account_payload.sql

BEGIN;
--
-- Remove field payload from account
--
ALTER TABLE "account" DROP COLUMN "payload" CASCADE;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0007_auto_20200217_0345.sql

BEGIN;
--
-- Creates extension uuid-ossp
--
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
--
-- Create model PullRequestActivity
--
CREATE TABLE "pull_request_activity" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "date" date NOT NULL, "total_opened" integer NOT NULL, "total_merged" integer NOT NULL, "total_closed" integer NOT NULL, "kodiak_approved" integer NOT NULL, "kodiak_merged" integer NOT NULL, "kodiak_updated" integer NOT NULL, "github_installation_id" integer NOT NULL);
--
-- Create constraint unique_pull_request_activity on model pullrequestactivity
--
ALTER TABLE "pull_request_activity" ADD CONSTRAINT "unique_pull_request_activity" UNIQUE ("date", "github_installation_id");
CREATE INDEX "pull_request_activity_date_85dcf041" ON "pull_request_activity" ("date");
CREATE INDEX "pull_request_activity_github_installation_id_2fd922a3" ON "pull_request_activity" ("github_installation_id");
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0009_pullrequestactivityprogress.sql

BEGIN;
--
-- Create model PullRequestActivityProgress
--
CREATE TABLE "pull_request_activity_progress" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "min_date" date NOT NULL);
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0010_auto_20200220_0116.sql

BEGIN;
--
-- Create model UserPullRequestActivity
--
CREATE TABLE "user_pull_request_activity" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_installation_id" integer NOT NULL, "github_repository_name" varchar(255) NOT NULL, "github_pull_request_number" integer NOT NULL, "github_user_login" varchar(255) NOT NULL, "github_user_id" integer NOT NULL, "is_private_repository" boolean NOT NULL, "activity_date" date NOT NULL);
--
-- Create model UserPullRequestActivityProgress
--
CREATE TABLE "user_pull_request_activity_progress" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "min_date" timestamp with time zone NOT NULL);
--
-- Create constraint unique_user_pull_request_activity on model userpullrequestactivity
--
ALTER TABLE "user_pull_request_activity" ADD CONSTRAINT "unique_user_pull_request_activity" UNIQUE ("github_installation_id", "github_repository_name", "github_pull_request_number", "github_user_id", "activity_date");
CREATE INDEX "user_pull_request_activity_github_installation_id_5c705873" ON "user_pull_request_activity" ("github_installation_id");
CREATE INDEX "user_pull_request_activity_github_repository_name_32f0dfb9" ON "user_pull_request_activity" ("github_repository_name");
CREATE INDEX "user_pull_request_activity_github_repository_name_32f0dfb9_like" ON "user_pull_request_activity" ("github_repository_name" varchar_pattern_ops);
CREATE INDEX "user_pull_request_activity_github_pull_request_number_b7ddef97" ON "user_pull_request_activity" ("github_pull_request_number");
CREATE INDEX "user_pull_request_activity_github_user_login_410e8de1" ON "user_pull_request_activity" ("github_user_login");
CREATE INDEX "user_pull_request_activity_github_user_login_410e8de1_like" ON "user_pull_request_activity" ("github_user_login" varchar_pattern_ops);
CREATE INDEX "user_pull_request_activity_github_user_id_c880240f" ON "user_pull_request_activity" ("github_user_id");
CREATE INDEX "user_pull_request_activity_is_private_repository_f07d6048" ON "user_pull_request_activity" ("is_private_repository");
CREATE INDEX "user_pull_request_activity_activity_date_40311df5" ON "user_pull_request_activity" ("activity_date");
CREATE INDEX "user_pull_request_activity_progress_min_date_321eae12" ON "user_pull_request_activity_progress" ("min_date");
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0010_auto_20200220_0116.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model UserPullRequestActivity
   4 | --
   5 | CREATE TABLE "user_pull_request_activity" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_installation_id" integer NOT NULL, "github_repository_name" varchar(255) NOT NULL, "github_pull_request_number" integer NOT NULL, "github_user_login" varchar(255) NOT NULL, "github_user_id" integer NOT NULL, "is_private_repository" boolean NOT NULL, "activity_date" date NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0010_auto_20200220_0116.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model UserPullRequestActivity
   4 | --
   5 | CREATE TABLE "user_pull_request_activity" ("id" uuid NOT NULL PRIMARY KEY, "created_at" timestamp with time zone NOT NULL, "modified_at" timestamp with time zone NOT NULL, "github_installation_id" integer NOT NULL, "github_repository_name" varchar(255) NOT NULL, "github_pull_request_number" integer NOT NULL, "github_user_login" varchar(255) NOT NULL, "github_user_id" integer NOT NULL, "is_private_repository" boolean NOT NULL, "activity_date" date NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0011_accountmembership_role.sql

BEGIN;
--
-- Add field role to accountmembership
--
ALTER TABLE "account_membership" ADD COLUMN "role" varchar(255) DEFAULT 'member' NOT NULL;
ALTER TABLE "account_membership" ALTER COLUMN "role" DROP DEFAULT;
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0011_accountmembership_role.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field role to accountmembership
   4 | --
   5 | ALTER TABLE "account_membership" ADD COLUMN "role" varchar(255) DEFAULT 'member' NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0011_accountmembership_role.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field role to accountmembership
   4 | --
   5 | ALTER TABLE "account_membership" ADD COLUMN "role" varchar(255) DEFAULT 'member' NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0012_auto_20200308_2254.sql

BEGIN;
--
-- Create constraint role_valid on model accountmembership
--
ALTER TABLE "account_membership" ADD CONSTRAINT "role_valid" CHECK ("role" IN ('admin', 'member'));
COMMIT;

🚒 Rule Violations (1)

web_api/migrations/0012_auto_20200308_2254.sql:2:1: warning: constraint-missing-not-valid

   2 | --
   3 | -- Create constraint role_valid on model accountmembership
   4 | --
   5 | ALTER TABLE "account_membership" ADD CONSTRAINT "role_valid" CHECK ("role" IN ('admin', 'member'));

  note: Requires a table scan to verify constraint and an ACCESS EXCLUSIVE lock which blocks reads.
  help: Add NOT VALID to the constraint and then VALIDATE the constraint.

web_api/migrations/0013_auto_20200310_0412.sql

BEGIN;
--
-- Add field opened_pull_request to userpullrequestactivity
--
ALTER TABLE "user_pull_request_activity" ADD COLUMN "opened_pull_request" boolean DEFAULT false NOT NULL;
ALTER TABLE "user_pull_request_activity" ALTER COLUMN "opened_pull_request" DROP DEFAULT;
--
-- Create constraint github_account_type_valid on model account
--
ALTER TABLE "account" ADD CONSTRAINT "github_account_type_valid" CHECK ("github_account_type" IN ('User', 'Organization'));
CREATE INDEX "user_pull_request_activity_opened_pull_request_c0f83e3f" ON "user_pull_request_activity" ("opened_pull_request");
COMMIT;

🚒 Rule Violations (4)

web_api/migrations/0013_auto_20200310_0412.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field opened_pull_request to userpullrequestactivity
   4 | --
   5 | ALTER TABLE "user_pull_request_activity" ADD COLUMN "opened_pull_request" boolean DEFAULT false NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0013_auto_20200310_0412.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field opened_pull_request to userpullrequestactivity
   4 | --
   5 | ALTER TABLE "user_pull_request_activity" ADD COLUMN "opened_pull_request" boolean DEFAULT false NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0013_auto_20200310_0412.sql:7:1: warning: constraint-missing-not-valid

   7 | --
   8 | -- Create constraint github_account_type_valid on model account
   9 | --
  10 | ALTER TABLE "account" ADD CONSTRAINT "github_account_type_valid" CHECK ("github_account_type" IN ('User', 'Organization'));

  note: Requires a table scan to verify constraint and an ACCESS EXCLUSIVE lock which blocks reads.
  help: Add NOT VALID to the constraint and then VALIDATE the constraint.

web_api/migrations/0013_auto_20200310_0412.sql:11:1: warning: require-concurrent-index-creation

  11 | CREATE INDEX "user_pull_request_activity_opened_pull_request_c0f83e3f" ON "user_pull_request_activity" ("opened_pull_request");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0014_auto_20200323_0159.sql

BEGIN;
--
-- Create model StripeCustomerInformation
--
CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);
--
-- Add field stripe_customer_id to account
--
ALTER TABLE "account" ADD COLUMN "stripe_customer_id" varchar(255) DEFAULT '' NOT NULL;
ALTER TABLE "account" ALTER COLUMN "stripe_customer_id" DROP DEFAULT;
--
-- Add field trial_expiration to account
--
ALTER TABLE "account" ADD COLUMN "trial_expiration" timestamp with time zone NULL;
--
-- Add field trial_start to account
--
ALTER TABLE "account" ADD COLUMN "trial_start" timestamp with time zone NULL;
--
-- Add field trial_started_by to account
--
ALTER TABLE "account" ADD COLUMN "trial_started_by_id" uuid NULL CONSTRAINT "account_trial_started_by_id_433c142c_fk_user_id" REFERENCES "user"("id") DEFERRABLE INITIALLY DEFERRED; SET CONSTRAINTS "account_trial_started_by_id_433c142c_fk_user_id" IMMEDIATE;
CREATE INDEX "stripe_customer_information_customer_id_5155944e_like" ON "stripe_customer_information" ("customer_id" varchar_pattern_ops);
CREATE INDEX "stripe_customer_information_subscription_id_9e6aa330_like" ON "stripe_customer_information" ("subscription_id" varchar_pattern_ops);
CREATE INDEX "stripe_customer_information_plan_id_9ac65f55_like" ON "stripe_customer_information" ("plan_id" varchar_pattern_ops);
CREATE INDEX "stripe_customer_information_payment_method_id_c2612168_like" ON "stripe_customer_information" ("payment_method_id" varchar_pattern_ops);
CREATE INDEX "account_stripe_customer_id_ea2e5623" ON "account" ("stripe_customer_id");
CREATE INDEX "account_stripe_customer_id_ea2e5623_like" ON "account" ("stripe_customer_id" varchar_pattern_ops);
CREATE INDEX "account_trial_started_by_id_433c142c" ON "account" ("trial_started_by_id");
COMMIT;

🚒 Rule Violations (12)

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:2:1: warning: prefer-text-field

   2 | --
   3 | -- Create model StripeCustomerInformation
   4 | --
   5 | CREATE TABLE "stripe_customer_information" ("customer_id" varchar(255) NOT NULL PRIMARY KEY, "subscription_id" varchar(255) NOT NULL UNIQUE, "plan_id" varchar(255) NOT NULL UNIQUE, "payment_method_id" varchar(255) NOT NULL UNIQUE, "customer_email" varchar(255) NOT NULL, "customer_balance" integer NOT NULL, "customer_created" integer NOT NULL, "customer_delinquent" boolean NOT NULL, "payment_method_card_brand" varchar(255) NULL, "payment_method_card_exp_month" integer NULL, "payment_method_card_exp_year" integer NULL, "payment_method_card_last4" varchar(255) NULL, "plan_amount" integer NOT NULL, "subscription_quantity" integer NOT NULL, "subscription_start_date" integer NOT NULL, "subscription_current_period_end" integer NOT NULL, "subscription_current_period_start" integer NOT NULL);

  note: Changing the size of a varchar field requires an ACCESS EXCLUSIVE lock.
  help: Use a text field with a check constraint.

web_api/migrations/0014_auto_20200323_0159.sql:6:1: warning: adding-not-nullable-field

   6 | --
   7 | -- Add field stripe_customer_id to account
   8 | --
   9 | ALTER TABLE "account" ADD COLUMN "stripe_customer_id" varchar(255) DEFAULT '' NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0014_auto_20200323_0159.sql:6:1: warning: adding-field-with-default

   6 | --
   7 | -- Add field stripe_customer_id to account
   8 | --
   9 | ALTER TABLE "account" ADD COLUMN "stripe_customer_id" varchar(255) DEFAULT '' NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0014_auto_20200323_0159.sql:27:1: warning: require-concurrent-index-creation

  27 | CREATE INDEX "account_stripe_customer_id_ea2e5623" ON "account" ("stripe_customer_id");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0014_auto_20200323_0159.sql:28:1: warning: require-concurrent-index-creation

  28 | CREATE INDEX "account_stripe_customer_id_ea2e5623_like" ON "account" ("stripe_customer_id" varchar_pattern_ops);

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0014_auto_20200323_0159.sql:29:1: warning: require-concurrent-index-creation

  29 | CREATE INDEX "account_trial_started_by_id_433c142c" ON "account" ("trial_started_by_id");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0015_remove_stripecustomerinformation_customer_delinquent.sql

BEGIN;
--
-- Remove field customer_delinquent from stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" DROP COLUMN "customer_delinquent" CASCADE;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0016_auto_20200405_1511.sql

BEGIN;
--
-- Alter field payment_method_card_exp_month on stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ALTER COLUMN "payment_method_card_exp_month" TYPE varchar(255) USING "payment_method_card_exp_month"::varchar(255);
--
-- Alter field payment_method_card_exp_year on stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ALTER COLUMN "payment_method_card_exp_year" TYPE varchar(255) USING "payment_method_card_exp_year"::varchar(255);
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0016_auto_20200405_1511.sql:2:1: warning: changing-column-type

   2 | --
   3 | -- Alter field payment_method_card_exp_month on stripecustomerinformation
   4 | --
   5 | ALTER TABLE "stripe_customer_information" ALTER COLUMN "payment_method_card_exp_month" TYPE varchar(255) USING "payment_method_card_exp_month"::varchar(255);

  note: Requires an ACCESS EXCLUSIVE lock on the table which blocks reads.
  note: Changing the type may break existing clients.

web_api/migrations/0016_auto_20200405_1511.sql:6:1: warning: changing-column-type

   6 | --
   7 | -- Alter field payment_method_card_exp_year on stripecustomerinformation
   8 | --
   9 | ALTER TABLE "stripe_customer_information" ALTER COLUMN "payment_method_card_exp_year" TYPE varchar(255) USING "payment_method_card_exp_year"::varchar(255);

  note: Requires an ACCESS EXCLUSIVE lock on the table which blocks reads.
  note: Changing the type may break existing clients.

web_api/migrations/0017_account_trial_email.sql

BEGIN;
--
-- Add field trial_email to account
--
ALTER TABLE "account" ADD COLUMN "trial_email" varchar(255) DEFAULT '' NOT NULL;
ALTER TABLE "account" ALTER COLUMN "trial_email" DROP DEFAULT;
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0017_account_trial_email.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field trial_email to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "trial_email" varchar(255) DEFAULT '' NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0017_account_trial_email.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field trial_email to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "trial_email" varchar(255) DEFAULT '' NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0018_auto_20200502_1849.sql

BEGIN;
--
-- Alter field payment_method_id on stripecustomerinformation
--
CREATE INDEX "stripe_customer_information_payment_method_id_c2612168" ON "stripe_customer_information" ("payment_method_id");
--
-- Alter field plan_id on stripecustomerinformation
--
CREATE INDEX "stripe_customer_information_plan_id_9ac65f55" ON "stripe_customer_information" ("plan_id");
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0018_auto_20200502_1849.sql:2:1: warning: require-concurrent-index-creation

   2 | --
   3 | -- Alter field payment_method_id on stripecustomerinformation
   4 | --
   5 | CREATE INDEX "stripe_customer_information_payment_method_id_c2612168" ON "stripe_customer_information" ("payment_method_id");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0018_auto_20200502_1849.sql:6:1: warning: require-concurrent-index-creation

   6 | --
   7 | -- Alter field plan_id on stripecustomerinformation
   8 | --
   9 | CREATE INDEX "stripe_customer_information_plan_id_9ac65f55" ON "stripe_customer_information" ("plan_id");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0019_auto_20200610_0006.sql

BEGIN;
--
-- Add field stripe_plan_id to account
--
ALTER TABLE "account" ADD COLUMN "stripe_plan_id" varchar(255) NULL;
--
-- Add field customer_currency to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_currency" varchar(255) NULL;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0020_auto_20200613_2012.sql

BEGIN;
--
-- Add field customer_address_city to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_city" varchar(255) NULL;
--
-- Add field customer_address_country to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_country" varchar(255) NULL;
--
-- Add field customer_address_line1 to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_line1" varchar(255) NULL;
--
-- Add field customer_address_line2 to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_line2" varchar(255) NULL;
--
-- Add field customer_address_postal_code to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_postal_code" varchar(255) NULL;
--
-- Add field customer_address_state to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_address_state" varchar(255) NULL;
--
-- Add field customer_name to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "customer_name" varchar(255) NULL;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0021_auto_20200617_1246.sql

BEGIN;
--
-- Add field plan_interval to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "plan_interval" varchar(255) NULL;
--
-- Add field plan_interval_count to stripecustomerinformation
--
ALTER TABLE "stripe_customer_information" ADD COLUMN "plan_interval_count" integer NULL;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0022_remove_account_stripe_plan_id.sql

BEGIN;
--
-- Remove field stripe_plan_id from account
--
ALTER TABLE "account" DROP COLUMN "stripe_plan_id" CASCADE;
COMMIT;

✅ Rule Violations (0)

No violations found.


web_api/migrations/0023_account_limit_billing_access_to_owners.sql

BEGIN;
--
-- Add field limit_billing_access_to_owners to account
--
ALTER TABLE "account" ADD COLUMN "limit_billing_access_to_owners" boolean DEFAULT false NOT NULL;
ALTER TABLE "account" ALTER COLUMN "limit_billing_access_to_owners" DROP DEFAULT;
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0023_account_limit_billing_access_to_owners.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field limit_billing_access_to_owners to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "limit_billing_access_to_owners" boolean DEFAULT false NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0023_account_limit_billing_access_to_owners.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field limit_billing_access_to_owners to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "limit_billing_access_to_owners" boolean DEFAULT false NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0024_auto_20200726_0316.sql

BEGIN;
--
-- Add field subscription_exempt to account
--
ALTER TABLE "account" ADD COLUMN "subscription_exempt" boolean DEFAULT false NOT NULL;
ALTER TABLE "account" ALTER COLUMN "subscription_exempt" DROP DEFAULT;
--
-- Add field subscription_exempt_message to account
--
ALTER TABLE "account" ADD COLUMN "subscription_exempt_message" text NULL;
COMMIT;

🚒 Rule Violations (2)

web_api/migrations/0024_auto_20200726_0316.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field subscription_exempt to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "subscription_exempt" boolean DEFAULT false NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0024_auto_20200726_0316.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field subscription_exempt to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "subscription_exempt" boolean DEFAULT false NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0025_auto_20200902_0052.sql

BEGIN;
--
-- Add field contact_emails to account
--
ALTER TABLE "account" ADD COLUMN "contact_emails" text DEFAULT '' NOT NULL;
ALTER TABLE "account" ALTER COLUMN "contact_emails" DROP DEFAULT;
--
-- Create constraint contact_emails_max_length_2000 on model account
--
ALTER TABLE "account" ADD CONSTRAINT "contact_emails_max_length_2000" CHECK (LENGTH("contact_emails") < 2000);
COMMIT;

🚒 Rule Violations (3)

web_api/migrations/0025_auto_20200902_0052.sql:2:1: warning: adding-not-nullable-field

   2 | --
   3 | -- Add field contact_emails to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "contact_emails" text DEFAULT '' NOT NULL;

  note: Adding a NOT NULL field requires exclusive locks and table rewrites.
  help: Make the field nullable.

web_api/migrations/0025_auto_20200902_0052.sql:2:1: warning: adding-field-with-default

   2 | --
   3 | -- Add field contact_emails to account
   4 | --
   5 | ALTER TABLE "account" ADD COLUMN "contact_emails" text DEFAULT '' NOT NULL;

  note: In Postgres versions <11 adding a field with a DEFAULT requires a table rewrite with an ACCESS EXCLUSIVE lock.
  help: Add the field as nullable, then set a default, backfill, and remove nullabilty.

web_api/migrations/0025_auto_20200902_0052.sql:7:1: warning: constraint-missing-not-valid

   7 | --
   8 | -- Create constraint contact_emails_max_length_2000 on model account
   9 | --
  10 | ALTER TABLE "account" ADD CONSTRAINT "contact_emails_max_length_2000" CHECK (LENGTH("contact_emails") < 2000);

  note: Requires a table scan to verify constraint and an ACCESS EXCLUSIVE lock which blocks reads.
  help: Add NOT VALID to the constraint and then VALIDATE the constraint.

web_api/migrations/0026_auto_20220322_0036.sql

BEGIN;
--
-- Alter field created_at on account
--
CREATE INDEX "account_created_at_c71fc1ad" ON "account" ("created_at");
--
-- Alter field created_at on accountmembership
--
CREATE INDEX "account_membership_created_at_3c268f6c" ON "account_membership" ("created_at");
--
-- Alter field created_at on githubevent
--
CREATE INDEX "github_event_created_at_3f85f8ad" ON "github_event" ("created_at");
--
-- Alter field created_at on pullrequestactivity
--
CREATE INDEX "pull_request_activity_created_at_02396ea3" ON "pull_request_activity" ("created_at");
--
-- Alter field created_at on pullrequestactivityprogress
--
CREATE INDEX "pull_request_activity_progress_created_at_b795bfd0" ON "pull_request_activity_progress" ("created_at");
--
-- Alter field created_at on user
--
CREATE INDEX "user_created_at_64c716d1" ON "user" ("created_at");
--
-- Alter field created_at on userpullrequestactivity
--
CREATE INDEX "user_pull_request_activity_created_at_b93cdc90" ON "user_pull_request_activity" ("created_at");
--
-- Alter field created_at on userpullrequestactivityprogress
--
CREATE INDEX "user_pull_request_activity_progress_created_at_39c278b5" ON "user_pull_request_activity_progress" ("created_at");
COMMIT;

🚒 Rule Violations (8)

web_api/migrations/0026_auto_20220322_0036.sql:2:1: warning: require-concurrent-index-creation

   2 | --
   3 | -- Alter field created_at on account
   4 | --
   5 | CREATE INDEX "account_created_at_c71fc1ad" ON "account" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:6:1: warning: require-concurrent-index-creation

   6 | --
   7 | -- Alter field created_at on accountmembership
   8 | --
   9 | CREATE INDEX "account_membership_created_at_3c268f6c" ON "account_membership" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:10:1: warning: require-concurrent-index-creation

  10 | --
  11 | -- Alter field created_at on githubevent
  12 | --
  13 | CREATE INDEX "github_event_created_at_3f85f8ad" ON "github_event" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:14:1: warning: require-concurrent-index-creation

  14 | --
  15 | -- Alter field created_at on pullrequestactivity
  16 | --
  17 | CREATE INDEX "pull_request_activity_created_at_02396ea3" ON "pull_request_activity" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:18:1: warning: require-concurrent-index-creation

  18 | --
  19 | -- Alter field created_at on pullrequestactivityprogress
  20 | --
  21 | CREATE INDEX "pull_request_activity_progress_created_at_b795bfd0" ON "pull_request_activity_progress" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:22:1: warning: require-concurrent-index-creation

  22 | --
  23 | -- Alter field created_at on user
  24 | --
  25 | CREATE INDEX "user_created_at_64c716d1" ON "user" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:26:1: warning: require-concurrent-index-creation

  26 | --
  27 | -- Alter field created_at on userpullrequestactivity
  28 | --
  29 | CREATE INDEX "user_pull_request_activity_created_at_b93cdc90" ON "user_pull_request_activity" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

web_api/migrations/0026_auto_20220322_0036.sql:30:1: warning: require-concurrent-index-creation

  30 | --
  31 | -- Alter field created_at on userpullrequestactivityprogress
  32 | --
  33 | CREATE INDEX "user_pull_request_activity_progress_created_at_39c278b5" ON "user_pull_request_activity_progress" ("created_at");

  note: Creating an index blocks writes.
  help: Create the index CONCURRENTLY.

📚 More info on rules

⚡️ Powered by Squawk, a linter for PostgreSQL, focused on migrations