modelos con propiedad tipo array

This commit is contained in:
serxoz 2022-09-23 22:30:11 +02:00
parent c0ef566221
commit 4d2bcb634a
6 changed files with 52 additions and 7 deletions

View File

@ -0,0 +1,6 @@
-- This file was automatically created by Diesel to setup helper functions
-- and other internal bookkeeping. This file is safe to edit, any future
-- changes will be added to existing projects as new migrations.
DROP FUNCTION IF EXISTS diesel_manage_updated_at(_tbl regclass);
DROP FUNCTION IF EXISTS diesel_set_updated_at();

View File

@ -0,0 +1,36 @@
-- This file was automatically created by Diesel to setup helper functions
-- and other internal bookkeeping. This file is safe to edit, any future
-- changes will be added to existing projects as new migrations.
-- Sets up a trigger for the given table to automatically set a column called
-- `updated_at` whenever the row is modified (unless `updated_at` was included
-- in the modified columns)
--
-- # Example
--
-- ```sql
-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW());
--
-- SELECT diesel_manage_updated_at('users');
-- ```
CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$
BEGIN
EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s
FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$
BEGIN
IF (
NEW IS DISTINCT FROM OLD AND
NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at
) THEN
NEW.updated_at := current_timestamp;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

View File

@ -6,5 +6,6 @@ CREATE TABLE object (
location varchar(100) NOT NULL, location varchar(100) NOT NULL,
peso int NOT NULL, peso int NOT NULL,
destino varchar(100), destino varchar(100),
condiciones text[] NOT NULL default '{}',
CONSTRAINT PK_Object PRIMARY KEY (tag) CONSTRAINT PK_Object PRIMARY KEY (tag)
) )

View File

@ -1,10 +1,10 @@
INSERT INTO object INSERT INTO object
(tag, tipo, nombre, descripcion, location, peso, destino) (tag, tipo, nombre, descripcion, location, peso, destino, condiciones)
VALUES VALUES
('o0', 'item', 'palanca', 'Trozo de metal, servirá como palanca', '0', 0, NULL), ('o0', 'item', 'palanca', 'Trozo de metal, servirá como palanca', '0', 0, NULL, '{}'),
('o1', 'item', 'calmantes', 'Calmantes, sirven para el dolor', '2', 0, NULL), ('o1', 'item', 'calmantes', 'Calmantes, sirven para el dolor', '2', 0, NULL, '{}'),
('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1'), ('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1', '{"open"}'),
('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0'), ('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0', '{"open"}'),
('s1se', 'salida', 'este', 'Pasillo.', '1', 0, '2'), ('s1se', 'salida', 'este', 'Pasillo.', '1', 0, '2', '{}'),
('s2so', 'salida', 'oeste', 'Pasillo.', '2', 0, '1'); ('s2so', 'salida', 'oeste', 'Pasillo.', '2', 0, '1', '{}');

View File

@ -21,6 +21,7 @@ pub struct RObject {
pub location: String, pub location: String,
pub peso: i32, pub peso: i32,
pub destino: Option<String>, pub destino: Option<String>,
pub condiciones: Vec<Option<String>>,
} }
#[derive(Queryable, Insertable, AsChangeset)] #[derive(Queryable, Insertable, AsChangeset)]

View File

@ -29,6 +29,7 @@ diesel::table! {
location -> Varchar, location -> Varchar,
peso -> Int4, peso -> Int4,
destino -> Nullable<Varchar>, destino -> Nullable<Varchar>,
condiciones -> Array<Nullable<Text>>,
} }
} }