· 3 years ago · May 25, 2022, 07:10 PM
1-- SCHEMA: gerador
2
3-- DROP SCHEMA IF EXISTS gerador ;
4
5CREATE SCHEMA IF NOT EXISTS gerador
6 AUTHORIZATION postgres;
7
8
9--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
10----//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
11--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
12
13
14-- Table: gerador.pessoa
15
16-- DROP TABLE IF EXISTS gerador.pessoa;
17
18CREATE TABLE IF NOT EXISTS gerador.pessoa
19(
20 id bigserial NOT NULL,
21 content json,
22 datahora timestamp without time zone DEFAULT CURRENT_TIMESTAMP(0),
23 CONSTRAINT pessoa_pkey PRIMARY KEY (id)
24)
25TABLESPACE pg_default;
26
27ALTER TABLE IF EXISTS gerador.pessoa
28 OWNER to postgres;
29
30
31--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
32----//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
33--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
34
35
36-- Table: gerador.pessoas
37
38-- DROP TABLE IF EXISTS gerador.pessoas;
39
40CREATE TABLE IF NOT EXISTS gerador.pessoas
41(
42 id bigint NOT NULL DEFAULT nextval('gerador.pessoas_id_seq'::regclass),
43 nome character varying(150) COLLATE pg_catalog."default",
44 idade integer,
45 cpf character varying(11) COLLATE pg_catalog."default",
46 rg character varying(15) COLLATE pg_catalog."default",
47 data_nasc date,
48 sexo character varying(1) COLLATE pg_catalog."default",
49 signo character varying(15) COLLATE pg_catalog."default",
50 mae character varying(150) COLLATE pg_catalog."default",
51 pai character varying(150) COLLATE pg_catalog."default",
52 email character varying(150) COLLATE pg_catalog."default",
53 senha character varying(30) COLLATE pg_catalog."default",
54 cep character varying(8) COLLATE pg_catalog."default",
55 endereco character varying(200) COLLATE pg_catalog."default",
56 numero integer,
57 bairro character varying(120) COLLATE pg_catalog."default",
58 cidade character varying(80) COLLATE pg_catalog."default",
59 estado character varying(2) COLLATE pg_catalog."default",
60 telefone_fixo character varying(11) COLLATE pg_catalog."default",
61 celular character varying(12) COLLATE pg_catalog."default",
62 altura numeric(3,2),
63 peso integer,
64 tipo_sanguineo character varying(3) COLLATE pg_catalog."default",
65 cor character varying(15) COLLATE pg_catalog."default",
66 CONSTRAINT pessoas_pkey PRIMARY KEY (id)
67)
68
69TABLESPACE pg_default;
70
71ALTER TABLE IF EXISTS gerador.pessoas
72 OWNER to postgres;
73-- Index: pessoas_estado
74
75-- DROP INDEX IF EXISTS gerador.pessoas_estado;
76
77CREATE INDEX IF NOT EXISTS pessoas_estado
78 ON gerador.pessoas USING btree
79 (estado COLLATE pg_catalog."default" ASC NULLS LAST)
80 TABLESPACE pg_default;
81
82
83-- FUNCTION: gerador.fn_savepessoas()
84
85-- DROP FUNCTION IF EXISTS gerador.fn_savepessoas();
86
87CREATE OR REPLACE FUNCTION gerador.fn_savepessoas()
88 RETURNS trigger
89 LANGUAGE 'plpgsql'
90 COST 100
91 VOLATILE NOT LEAKPROOF SECURITY DEFINER
92 SET search_path=gerador
93AS $BODY$
94BEGIN
95 IF TG_OP = 'INSERT' THEN
96 INSERT INTO pessoas(nome, idade, cpf, rg, data_nasc, sexo, signo, mae, pai, email, senha, cep, endereco, numero, bairro, cidade, estado, telefone_fixo, celular, altura, peso, tipo_sanguineo, cor)
97 SELECT
98 (c->>'nome')::VARCHAR(150) AS nome,
99 (c->>'idade')::INTEGER AS idade,
100 regexp_replace((c->>'cpf'), '\D', '', 'g')::VARCHAR(11) AS CPF,
101 (c->>'rg')::VARCHAR(15) AS rg,
102 (c->>'data_nasc')::DATE AS data_nasc,
103 substring((c->>'sexo'), 1, 1)::VARCHAR(1) AS sexo,
104 (c->>'signo')::VARCHAR(15) AS signo,
105 (c->>'mae')::VARCHAR(150) AS mae,
106 (c->>'pai')::VARCHAR(150) AS pai,
107 (c->>'email')::VARCHAR(150) AS email,
108 (c->>'senha')::VARCHAR(30) AS senha,
109 regexp_replace((c->>'cep'), '\D', '', 'g')::VARCHAR(8) AS CEP,
110 (c->>'endereco')::VARCHAR(200) AS endereco,
111 (c->>'numero')::INTEGER AS numero,
112 (c->>'bairro')::VARCHAR(120) AS bairro,
113 (c->>'cidade')::VARCHAR(80) AS cidade,
114 (c->>'estado')::VARCHAR(2) AS estado,
115 regexp_replace((c->>'telefone_fixo'), '\D', '', 'g')::VARCHAR(11) AS telefone_fixo,
116 regexp_replace((c->>'celular'), '\D', '', 'g')::VARCHAR(12) AS celular,
117 REPLACE((c->>'altura'), ',', '.')::numeric(3,2) AS altura,
118 (c->>'peso')::INTEGER AS peso,
119 (c->>'tipo_sanguineo')::VARCHAR(3) AS tipo_sanguineo,
120 (c->>'cor')::VARCHAR(15) AS cor
121 FROM
122 json_array_elements(NEW.content) c;
123 END IF;
124 RETURN NEW;
125END;
126$BODY$;
127
128ALTER FUNCTION gerador.fn_savepessoas()
129 OWNER TO postgres;
130
131
132-- Trigger: insert_pessoas
133
134-- DROP TRIGGER IF EXISTS insert_pessoas ON gerador.pessoa;
135
136CREATE TRIGGER insert_pessoas
137 AFTER INSERT
138 ON gerador.pessoa
139 FOR EACH ROW
140 EXECUTE FUNCTION gerador.fn_savepessoas();
141
142
143--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
144----//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
145--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
146
147
148