Compare commits
No commits in common. "39faab6483b2631c9fca4acddea194295aaf1504" and "93e08a03784454e7ef58d5ea2d5b57cd30d50ffb" have entirely different histories.
39faab6483
...
93e08a0378
@ -19,7 +19,7 @@ namespace OpenCand.Repository
|
|||||||
FROM candidato c
|
FROM candidato c
|
||||||
WHERE c.apelido % @q
|
WHERE c.apelido % @q
|
||||||
OR c.nome % @q
|
OR c.nome % @q
|
||||||
ORDER BY c.popularidade DESC, sim DESC, length(c.nome) ASC
|
ORDER BY sim DESC, length(c.nome) ASC
|
||||||
LIMIT 10;
|
LIMIT 10;
|
||||||
", new { q = query })).AsList();
|
", new { q = query })).AsList();
|
||||||
}
|
}
|
||||||
|
140
db/db.sql
140
db/db.sql
@ -1,140 +0,0 @@
|
|||||||
DROP TABLE IF EXISTS bem_candidato CASCADE;
|
|
||||||
DROP TABLE IF EXISTS candidato_mapping CASCADE;
|
|
||||||
DROP TABLE IF EXISTS rede_social CASCADE;
|
|
||||||
DROP TABLE IF EXISTS candidato CASCADE;
|
|
||||||
DROP TABLE IF EXISTS partido CASCADE;
|
|
||||||
DROP TABLE IF EXISTS despesas_candidato CASCADE;
|
|
||||||
DROP TABLE IF EXISTS receitas_candidato CASCADE;
|
|
||||||
|
|
||||||
CREATE TABLE candidato (
|
|
||||||
idcandidato UUID NOT NULL PRIMARY KEY,
|
|
||||||
cpf VARCHAR(11),
|
|
||||||
nome VARCHAR(255) NOT NULL,
|
|
||||||
apelido VARCHAR(255),
|
|
||||||
datanascimento TIMESTAMPTZ,
|
|
||||||
email TEXT,
|
|
||||||
sexo CHAR(15),
|
|
||||||
estadocivil VARCHAR(50),
|
|
||||||
escolaridade VARCHAR(50),
|
|
||||||
ocupacao VARCHAR(150),
|
|
||||||
popularidade BIGINT DEFAULT 0,
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_candidato_nome ON candidato (nome);
|
|
||||||
CREATE INDEX idx_candidato_apelido ON candidato (apelido);
|
|
||||||
CREATE INDEX idx_candidato_datanascimento ON candidato (datanascimento);
|
|
||||||
CREATE INDEX idx_candidato_nomenascimento ON candidato (nome, datanascimento);
|
|
||||||
CREATE INDEX idx_candidato_cpf ON candidato (cpf);
|
|
||||||
|
|
||||||
-- Each candidato (idcandidato, cpf, nome) will be mapped to a (sqcandidato, ano, tipo_eleicao, sg_uf, cargo, resultado)
|
|
||||||
CREATE TABLE candidato_mapping (
|
|
||||||
idcandidato UUID NOT NULL,
|
|
||||||
cpf VARCHAR(11),
|
|
||||||
nome VARCHAR(255) NOT NULL,
|
|
||||||
apelido VARCHAR(255),
|
|
||||||
sqcandidato VARCHAR(50) NOT NULL,
|
|
||||||
turno VARCHAR(2) NOT NULL,
|
|
||||||
ano INT NOT NULL,
|
|
||||||
tipoeleicao VARCHAR(50),
|
|
||||||
siglauf VARCHAR(2),
|
|
||||||
nomeue VARCHAR(100),
|
|
||||||
cargo VARCHAR(50),
|
|
||||||
sgpartido VARCHAR(50),
|
|
||||||
nrcandidato VARCHAR(20),
|
|
||||||
resultado VARCHAR(50),
|
|
||||||
CONSTRAINT pk_candidato_mapping PRIMARY KEY (idcandidato, ano, siglauf, nomeue, cargo, nrcandidato, resultado),
|
|
||||||
CONSTRAINT fk_candidato_mapping_candidato FOREIGN KEY (idcandidato) REFERENCES candidato(idcandidato) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_candidato_mapping_cpf ON candidato_mapping (cpf);
|
|
||||||
CREATE INDEX idx_candidato_mapping_nome ON candidato_mapping (nome);
|
|
||||||
CREATE INDEX idx_candidato_mapping_apelido ON candidato_mapping (apelido);
|
|
||||||
CREATE INDEX idx_candidato_mapping_ano ON candidato_mapping (ano);
|
|
||||||
CREATE INDEX idx_candidato_mapping_sqcandidato ON candidato_mapping (sqcandidato);
|
|
||||||
|
|
||||||
---- Table for storing assets of candidates
|
|
||||||
CREATE TABLE bem_candidato (
|
|
||||||
idcandidato UUID NOT NULL,
|
|
||||||
ano INT NOT NULL,
|
|
||||||
ordembem INT,
|
|
||||||
tipobem VARCHAR(150),
|
|
||||||
descricao VARCHAR(500),
|
|
||||||
valor NUMERIC(20, 2),
|
|
||||||
CONSTRAINT fk_bem_candidato_candidato FOREIGN KEY (idcandidato) REFERENCES candidato(idcandidato) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
ALTER TABLE bem_candidato ADD CONSTRAINT pk_bem_candidato PRIMARY KEY (idcandidato, ano, ordembem);
|
|
||||||
CREATE INDEX idx_bem_candidato_idcandidato ON bem_candidato (idcandidato);
|
|
||||||
CREATE INDEX idx_bem_candidato_valor ON bem_candidato (valor);
|
|
||||||
|
|
||||||
---- Table for storing social media links of candidates
|
|
||||||
CREATE TABLE rede_social (
|
|
||||||
idcandidato UUID NOT NULL,
|
|
||||||
rede VARCHAR(50) NOT NULL,
|
|
||||||
siglauf VARCHAR(2),
|
|
||||||
ano INT NOT NULL,
|
|
||||||
link TEXT NOT NULL,
|
|
||||||
CONSTRAINT pk_rede_social PRIMARY KEY (idcandidato, rede, siglauf, ano),
|
|
||||||
CONSTRAINT fk_rede_social_candidato FOREIGN KEY (idcandidato) REFERENCES candidato(idcandidato) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_rede_social_idcandidato ON rede_social (idcandidato);
|
|
||||||
|
|
||||||
---- Table for storing party information
|
|
||||||
CREATE TABLE partido (
|
|
||||||
sigla VARCHAR(50) NOT NULL PRIMARY KEY,
|
|
||||||
nome VARCHAR(255) NOT NULL,
|
|
||||||
numero INT NOT NULL
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_partido_nome ON partido (nome);
|
|
||||||
CREATE INDEX idx_partido_numero ON partido (numero);
|
|
||||||
|
|
||||||
---- Tables for storing despesas e receitas of candidacies
|
|
||||||
CREATE TABLE despesas_candidato (
|
|
||||||
idreceita UUID NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
idcandidato UUID NOT NULL,
|
|
||||||
ano INT NOT NULL,
|
|
||||||
turno VARCHAR(2) NOT NULL,
|
|
||||||
sqcandidato VARCHAR(50) NOT NULL,
|
|
||||||
sgpartido VARCHAR(50) NOT NULL,
|
|
||||||
tipofornecedor VARCHAR(150),
|
|
||||||
cnpjfornecedor VARCHAR(14),
|
|
||||||
cpffornecedor VARCHAR(11),
|
|
||||||
nomefornecedor VARCHAR(255),
|
|
||||||
nomefornecedorrfb VARCHAR(255),
|
|
||||||
municipiofornecedor VARCHAR(100),
|
|
||||||
tipodocumento VARCHAR(50),
|
|
||||||
datadespesa TIMESTAMPTZ,
|
|
||||||
descricao TEXT,
|
|
||||||
origemdespesa TEXT,
|
|
||||||
valor NUMERIC(20, 2),
|
|
||||||
CONSTRAINT pk_despesas_candidato PRIMARY KEY (idreceita),
|
|
||||||
CONSTRAINT fk_despesas_candidato_candidato FOREIGN KEY (idcandidato) REFERENCES candidato(idcandidato) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_despesas_candidato_idcandidato ON despesas_candidato (idcandidato);
|
|
||||||
CREATE INDEX idx_despesas_candidato_ano ON despesas_candidato (ano);
|
|
||||||
CREATE INDEX idx_despesas_candidato_sqcandidato ON despesas_candidato (sqcandidato);
|
|
||||||
CREATE INDEX idx_despesas_candidato_sgpartido ON despesas_candidato (sgpartido);
|
|
||||||
|
|
||||||
CREATE TABLE receitas_candidato (
|
|
||||||
idreceita UUID NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
idcandidato UUID NOT NULL,
|
|
||||||
ano INT NOT NULL,
|
|
||||||
turno VARCHAR(2) NOT NULL,
|
|
||||||
sqcandidato VARCHAR(50) NOT NULL,
|
|
||||||
sgpartido VARCHAR(50) NOT NULL,
|
|
||||||
fontereceita VARCHAR(150),
|
|
||||||
origemreceita VARCHAR(250),
|
|
||||||
naturezareceita VARCHAR(250),
|
|
||||||
especiereceita VARCHAR(250),
|
|
||||||
cnpjdoador VARCHAR(14),
|
|
||||||
cpfdoador VARCHAR(11),
|
|
||||||
nomedoador VARCHAR(255),
|
|
||||||
nomedoadorrfb VARCHAR(255),
|
|
||||||
municipiodoador VARCHAR(100),
|
|
||||||
datareceita TIMESTAMPTZ,
|
|
||||||
descricao TEXT,
|
|
||||||
valor NUMERIC(20, 2),
|
|
||||||
CONSTRAINT pk_receitas_candidato PRIMARY KEY (idreceita),
|
|
||||||
CONSTRAINT fk_receitas_candidato_candidato FOREIGN KEY (idcandidato) REFERENCES candidato(idcandidato) ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
CREATE INDEX idx_receitas_candidato_idcandidato ON receitas_candidato (idcandidato);
|
|
||||||
CREATE INDEX idx_receitas_candidato_ano ON receitas_candidato (ano);
|
|
||||||
CREATE INDEX idx_receitas_candidato_sqcandidato ON receitas_candidato (sqcandidato);
|
|
||||||
CREATE INDEX idx_receitas_candidato_sgpartido ON receitas_candidato (sgpartido);
|
|
Loading…
x
Reference in New Issue
Block a user