From 93011f71727b23b8577f7614690a952c90e1b468 Mon Sep 17 00:00:00 2001 From: f Date: Mon, 23 Dec 2024 16:36:04 -0300 Subject: [PATCH] fix: usar jsonb --- app/models/deploy_alternative_domain.rb | 2 +- app/models/deploy_distributed_press.rb | 5 +++- app/models/deploy_hidden_service.rb | 2 +- app/models/deploy_local.rb | 2 -- app/models/deploy_localized_domain.rb | 3 ++- app/models/deploy_rsync.rb | 4 ++- app/models/deploy_www.rb | 2 -- app/models/deploy_zip.rb | 2 -- ...30_change_deploys_values_type_to_json_b.rb | 25 +++++++++++++++++++ db/structure.sql | 7 +++--- 10 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 db/migrate/20241223185830_change_deploys_values_type_to_json_b.rb diff --git a/app/models/deploy_alternative_domain.rb b/app/models/deploy_alternative_domain.rb index 75b69180..293b032b 100644 --- a/app/models/deploy_alternative_domain.rb +++ b/app/models/deploy_alternative_domain.rb @@ -2,7 +2,7 @@ # Soportar dominios alternativos class DeployAlternativeDomain < Deploy - store :values, accessors: %i[hostname], coder: JSON + store_accessor :values, :hostname DEPENDENCIES = %i[deploy_local] diff --git a/app/models/deploy_distributed_press.rb b/app/models/deploy_distributed_press.rb index bbd5a9a0..93c392c8 100644 --- a/app/models/deploy_distributed_press.rb +++ b/app/models/deploy_distributed_press.rb @@ -12,7 +12,10 @@ require 'distributed_press/v1/client/site' # Al ser publicado, envía los archivos en un tarball y actualiza la # información. class DeployDistributedPress < Deploy - store :values, accessors: %i[hostname remote_site_id remote_info distributed_press_publisher_id], coder: JSON + store_accessor :values, :hostname + store_accessor :values, :remote_site_id + store_accessor :values, :remote_info + store_accessor :values, :distributed_press_publisher_id before_create :create_remote_site! before_destroy :delete_remote_site! diff --git a/app/models/deploy_hidden_service.rb b/app/models/deploy_hidden_service.rb index 25c0c217..b558edba 100644 --- a/app/models/deploy_hidden_service.rb +++ b/app/models/deploy_hidden_service.rb @@ -2,7 +2,7 @@ # Genera una versión onion class DeployHiddenService < DeployWww - store :values, accessors: %i[onion], coder: JSON + store_accessor :values, :onion before_create :create_hidden_service! diff --git a/app/models/deploy_local.rb b/app/models/deploy_local.rb index 29a31f8c..14b00a2f 100644 --- a/app/models/deploy_local.rb +++ b/app/models/deploy_local.rb @@ -3,8 +3,6 @@ # Alojamiento local, solo genera el sitio, con lo que no necesita hacer # nada más class DeployLocal < Deploy - store :values, accessors: %i[], coder: JSON - before_destroy :remove_destination! def bundle(output: false) diff --git a/app/models/deploy_localized_domain.rb b/app/models/deploy_localized_domain.rb index 59e17dcd..5a8c1689 100644 --- a/app/models/deploy_localized_domain.rb +++ b/app/models/deploy_localized_domain.rb @@ -2,7 +2,8 @@ # Soportar dominios localizados class DeployLocalizedDomain < DeployAlternativeDomain - store :values, accessors: %i[hostname locale], coder: JSON + store_accessor :values, :hostname + store_accessor :values, :locale # Generar un link simbólico del sitio principal al alternativo def deploy(**) diff --git a/app/models/deploy_rsync.rb b/app/models/deploy_rsync.rb index fcc5a65d..a85c2d02 100644 --- a/app/models/deploy_rsync.rb +++ b/app/models/deploy_rsync.rb @@ -3,7 +3,9 @@ # Sincroniza sitios a servidores remotos usando Rsync. El servidor # remoto tiene que tener rsync instalado. class DeployRsync < Deploy - store :values, accessors: %i[hostname destination host_keys], coder: JSON + store_accessor :values, :hostname + store_accessor :values, :destination + store_accessor :values, :host_keys DEPENDENCIES = %i[deploy_local deploy_zip] diff --git a/app/models/deploy_www.rb b/app/models/deploy_www.rb index bb25cc64..aafb518f 100644 --- a/app/models/deploy_www.rb +++ b/app/models/deploy_www.rb @@ -2,8 +2,6 @@ # Vincula la versión del sitio con www a la versión sin class DeployWww < Deploy - store :values, accessors: %i[], coder: JSON - DEPENDENCIES = %i[deploy_local] before_destroy :remove_destination! diff --git a/app/models/deploy_zip.rb b/app/models/deploy_zip.rb index 85005470..9f538f3e 100644 --- a/app/models/deploy_zip.rb +++ b/app/models/deploy_zip.rb @@ -6,8 +6,6 @@ require 'zip' # # TODO: Firmar con minisign class DeployZip < Deploy - store :values, accessors: %i[], coder: JSON - DEPENDENCIES = %i[deploy_local] # Una vez que el sitio está generado, tomar todos los archivos y diff --git a/db/migrate/20241223185830_change_deploys_values_type_to_json_b.rb b/db/migrate/20241223185830_change_deploys_values_type_to_json_b.rb new file mode 100644 index 00000000..5824a899 --- /dev/null +++ b/db/migrate/20241223185830_change_deploys_values_type_to_json_b.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ChangeDeploysValuesTypeToJsonB < ActiveRecord::Migration[6.1] + def up + add_column :deploys, :values_2, :jsonb, default: {} + + Deploy.find_each do |deploy| + deploy.update values_2: JSON.parse(deploy.values) + end + + remove_column :deploys, :values + rename_column :deploys, :values_2, :values + end + + def down + add_column :deploys, :values_2, :text + + Deploy.find_each do |deploy| + deploy.update values_2: deploy.values.to_json + end + + remove_column :deploys, :values + rename_column :deploys, :values_2, :values + end +end diff --git a/db/structure.sql b/db/structure.sql index 21cf04d0..962a4069 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -882,8 +882,8 @@ CREATE TABLE public.deploys ( updated_at timestamp without time zone NOT NULL, site_id integer, type character varying, - "values" text, - rol_id integer + rol_id integer, + "values" jsonb DEFAULT '{}'::jsonb ); @@ -2719,6 +2719,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20240316203721'), ('20240318183846'), ('20240319124212'), -('20240319144735'); +('20240319144735'), +('20241223185830');