From 0c4240ec3afe307b789491cdec9801949aa25dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Sun, 26 May 2024 11:49:46 +0200 Subject: [PATCH] Manager: make some db fields `boolean` instead of `smallint` Turn `workers.lazy_status_request` and `workers.can_restart` into a `boolean`. They were `smallint` before. Having these explicitly modeled as `boolean` will make sqlc generate the right type for them. No functional changes. --- .../migrations/0005_smallint_to_boolean.sql | 84 +++++++++++++++++++ internal/manager/persistence/sqlc/models.go | 4 +- internal/manager/persistence/sqlc/schema.sql | 4 +- internal/manager/persistence/workers.go | 4 +- 4 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 internal/manager/persistence/migrations/0005_smallint_to_boolean.sql diff --git a/internal/manager/persistence/migrations/0005_smallint_to_boolean.sql b/internal/manager/persistence/migrations/0005_smallint_to_boolean.sql new file mode 100644 index 00000000..c7d4a523 --- /dev/null +++ b/internal/manager/persistence/migrations/0005_smallint_to_boolean.sql @@ -0,0 +1,84 @@ +-- Some booleans were modeled as `smallint`. These are turned into `boolean` instead. +-- +-- +goose Up +CREATE TABLE temp_workers ( + id integer NOT NULL, + created_at datetime NOT NULL, + updated_at datetime, + uuid varchar(36) UNIQUE DEFAULT '' NOT NULL, + secret varchar(255) DEFAULT '' NOT NULL, + name varchar(64) DEFAULT '' NOT NULL, + address varchar(39) DEFAULT '' NOT NULL, + platform varchar(16) DEFAULT '' NOT NULL, + software varchar(32) DEFAULT '' NOT NULL, + status varchar(16) DEFAULT '' NOT NULL, + last_seen_at datetime, + status_requested varchar(16) DEFAULT '' NOT NULL, + lazy_status_request boolean DEFAULT false NOT NULL, + supported_task_types varchar(255) DEFAULT '' NOT NULL, + deleted_at datetime, + can_restart boolean DEFAULT false NOT NULL, + PRIMARY KEY (id) +); +INSERT INTO temp_workers SELECT + id, + created_at, + updated_at, + uuid, + secret, + name, + address, + platform, + software, + status, + last_seen_at, + status_requested, + lazy_status_request, + supported_task_types, + deleted_at, + can_restart +FROM workers; +DROP TABLE workers; +ALTER TABLE temp_workers RENAME TO workers; + + +-- +goose Down +CREATE TABLE temp_workers ( + id integer NOT NULL, + created_at datetime NOT NULL, + updated_at datetime, + uuid varchar(36) UNIQUE DEFAULT '' NOT NULL, + secret varchar(255) DEFAULT '' NOT NULL, + name varchar(64) DEFAULT '' NOT NULL, + address varchar(39) DEFAULT '' NOT NULL, + platform varchar(16) DEFAULT '' NOT NULL, + software varchar(32) DEFAULT '' NOT NULL, + status varchar(16) DEFAULT '' NOT NULL, + last_seen_at datetime, + status_requested varchar(16) DEFAULT '' NOT NULL, + lazy_status_request smallint DEFAULT false NOT NULL, + supported_task_types varchar(255) DEFAULT '' NOT NULL, + deleted_at datetime, + can_restart smallint DEFAULT false NOT NULL, + PRIMARY KEY (id) +); +INSERT INTO temp_workers SELECT + id, + created_at, + updated_at, + uuid, + secret, + name, + address, + platform, + software, + status, + last_seen_at, + status_requested, + lazy_status_request, + supported_task_types, + deleted_at, + can_restart +FROM workers; +DROP TABLE workers; +ALTER TABLE temp_workers RENAME TO workers; diff --git a/internal/manager/persistence/sqlc/models.go b/internal/manager/persistence/sqlc/models.go index 5bee5d96..e49ff97f 100644 --- a/internal/manager/persistence/sqlc/models.go +++ b/internal/manager/persistence/sqlc/models.go @@ -94,10 +94,10 @@ type Worker struct { Status string LastSeenAt sql.NullTime StatusRequested string - LazyStatusRequest int64 + LazyStatusRequest bool SupportedTaskTypes string DeletedAt sql.NullTime - CanRestart int64 + CanRestart bool } type WorkerTag struct { diff --git a/internal/manager/persistence/sqlc/schema.sql b/internal/manager/persistence/sqlc/schema.sql index 916fe101..b5f7c3de 100644 --- a/internal/manager/persistence/sqlc/schema.sql +++ b/internal/manager/persistence/sqlc/schema.sql @@ -109,10 +109,10 @@ CREATE TABLE workers ( status varchar(16) DEFAULT '' NOT NULL, last_seen_at datetime, status_requested varchar(16) DEFAULT '' NOT NULL, - lazy_status_request smallint DEFAULT false NOT NULL, + lazy_status_request boolean DEFAULT false NOT NULL, supported_task_types varchar(255) DEFAULT '' NOT NULL, deleted_at datetime, - can_restart smallint DEFAULT false NOT NULL, + can_restart boolean DEFAULT false NOT NULL, PRIMARY KEY (id) ); CREATE INDEX idx_jobs_uuid ON jobs(uuid); diff --git a/internal/manager/persistence/workers.go b/internal/manager/persistence/workers.go index c7d87f9e..50e5a176 100644 --- a/internal/manager/persistence/workers.go +++ b/internal/manager/persistence/workers.go @@ -251,9 +251,9 @@ func convertSqlcWorker(worker sqlc.Worker) Worker { Software: worker.Software, Status: api.WorkerStatus(worker.Status), LastSeenAt: worker.LastSeenAt.Time, - CanRestart: worker.CanRestart != 0, + CanRestart: worker.CanRestart, StatusRequested: api.WorkerStatus(worker.StatusRequested), - LazyStatusRequest: worker.LazyStatusRequest != 0, + LazyStatusRequest: worker.LazyStatusRequest, SupportedTaskTypes: worker.SupportedTaskTypes, } }