add apelido
This commit is contained in:
parent
a3d67198af
commit
03b1f4f1d1
@ -15,11 +15,21 @@ namespace OpenCand.Repository
|
||||
using (var connection = new NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
return (await connection.QueryAsync<Candidato>(@"
|
||||
SELECT idcandidato, cpf, nome, datanascimento, email, sexo, estadocivil, escolaridade, ocupacao
|
||||
SELECT *
|
||||
CASE
|
||||
WHEN lower(nome) = lower(@query) THEN 0 -- Exact match (case-insensitive)
|
||||
WHEN lower(nome) LIKE lower(@query) || '%' THEN 1 -- Starts with match (case-insensitive)
|
||||
WHEN lower(nome) LIKE '%' || lower(@query) THEN 2 -- Contains anywhere match (case-insensitive)
|
||||
WHEN cpf = @query THEN 0 -- Exact match for CPF
|
||||
WHEN cpf LIKE @query || '%' THEN 1 -- Starts with match for CPF
|
||||
WHEN cpf LIKE '%' || @query THEN 2 -- Contains anywhere match for CPF
|
||||
ELSE 3
|
||||
END AS name_rank
|
||||
FROM candidato
|
||||
WHERE nome ILIKE '%' || @query || '%' OR
|
||||
cpf ILIKE '%' || @query || '%' OR
|
||||
email ILIKE '%' || @query || '%'
|
||||
cpf ILIKE '%' || @query || '%'
|
||||
ORDER BY name_rank,
|
||||
length(nome) ASC
|
||||
LIMIT 10;",
|
||||
new { query })).AsList();
|
||||
}
|
||||
|
33
OpenCand.API/jpg-normalize.sh
Normal file
33
OpenCand.API/jpg-normalize.sh
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
cd ./fotos_cand
|
||||
COUNT=0
|
||||
shopt -s nocaseglob
|
||||
|
||||
# Loop through all folders
|
||||
for dir in */; do
|
||||
# Change into the directory
|
||||
cd "$dir" || continue
|
||||
|
||||
# Loop over every “.jpeg” (or “.JPEG”):
|
||||
for f in *.jpeg; do
|
||||
# “${f%.[jJ][pP][eE][gG]}” strips off the .jpeg/.JPEG suffix
|
||||
base="${f%.[jJ][pP][eE][gG]}"
|
||||
newfile="${base}.jpg"
|
||||
|
||||
# If there’s already a .jpg with the same “base,” decide what to do:
|
||||
if [ -e "$newfile" ]; then
|
||||
echo "Skipping $f → $newfile (target exists)"
|
||||
# you could `rm "$f"` or move it to a backup folder here if you prefer
|
||||
else
|
||||
mv -v "$f" "$newfile"
|
||||
fi
|
||||
done
|
||||
|
||||
# Change back to the parent directory
|
||||
cd ..
|
||||
done
|
||||
|
||||
shopt -u nocaseglob
|
||||
|
||||
# Print a message indicating completion
|
||||
echo "Normalization complete. Processed $COUNT files."
|
@ -12,6 +12,8 @@ namespace OpenCand.Core.Models
|
||||
|
||||
public string Nome { get; set; }
|
||||
|
||||
public string Apelido { get; set; }
|
||||
|
||||
public DateTime? DataNascimento { get; set; }
|
||||
|
||||
public string Email { get; set; }
|
||||
@ -35,6 +37,7 @@ namespace OpenCand.Core.Models
|
||||
public Guid IdCandidato { get; set; }
|
||||
public string Cpf { get; set; }
|
||||
public string Nome { get; set; }
|
||||
public string Apelido { get; set; }
|
||||
public string SqCandidato { get; set; }
|
||||
public int Ano { get; set; }
|
||||
public string TipoEleicao { get; set; }
|
||||
|
@ -29,6 +29,9 @@ namespace OpenCand.Parser.Models
|
||||
[Name("NM_CANDIDATO")]
|
||||
public string NomeCandidato { get; set; }
|
||||
|
||||
[Name("NM_URNA_CANDIDATO")]
|
||||
public string Apelido { get; set; }
|
||||
|
||||
[Name("NR_CPF_CANDIDATO")]
|
||||
public string CPFCandidato { get; set; }
|
||||
|
||||
|
@ -92,6 +92,7 @@ namespace OpenCand.Parser.Services
|
||||
Cpf = record.CPFCandidato,
|
||||
SqCandidato = record.SequencialCandidato,
|
||||
Nome = record.NomeCandidato,
|
||||
Apelido = record.Apelido,
|
||||
Email = record.Email.Contains("@") ? record.Email : null,
|
||||
Sexo = record.Genero,
|
||||
EstadoCivil = record.EstadoCivil,
|
||||
@ -103,6 +104,7 @@ namespace OpenCand.Parser.Services
|
||||
{
|
||||
Cpf = record.CPFCandidato,
|
||||
Nome = record.NomeCandidato,
|
||||
Apelido = record.Apelido,
|
||||
SqCandidato = record.SequencialCandidato,
|
||||
Ano = record.AnoEleicao,
|
||||
TipoEleicao = record.TipoAbrangencia,
|
||||
|
@ -24,9 +24,6 @@ namespace OpenCand
|
||||
|
||||
try
|
||||
{
|
||||
logger.LogInformation("Initializing database");
|
||||
// make a test connection to the database
|
||||
|
||||
logger.LogInformation("Starting data parsing");
|
||||
var parserManager = services.GetRequiredService<ParserManager>();
|
||||
await parserManager.ParseFullDataAsync();
|
||||
|
@ -16,8 +16,8 @@ namespace OpenCand.Repository
|
||||
using (var connection = new NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
await connection.ExecuteAsync(@"
|
||||
INSERT INTO candidato (idcandidato, cpf, nome, datanascimento, email, sexo, estadocivil, escolaridade, ocupacao)
|
||||
VALUES (@idcandidato, @cpf, @nome, @datanascimento, @email, @sexo, @estadocivil, @escolaridade, @ocupacao)
|
||||
INSERT INTO candidato (idcandidato, cpf, nome, apelido, datanascimento, email, sexo, estadocivil, escolaridade, ocupacao)
|
||||
VALUES (@idcandidato, @cpf, @nome, @apelido, @datanascimento, @email, @sexo, @estadocivil, @escolaridade, @ocupacao)
|
||||
ON CONFLICT (idcandidato) DO UPDATE SET
|
||||
cpf = EXCLUDED.cpf,
|
||||
nome = EXCLUDED.nome,
|
||||
@ -26,12 +26,14 @@ namespace OpenCand.Repository
|
||||
sexo = EXCLUDED.sexo,
|
||||
estadocivil = EXCLUDED.estadocivil,
|
||||
escolaridade = EXCLUDED.escolaridade,
|
||||
ocupacao = EXCLUDED.ocupacao;",
|
||||
ocupacao = EXCLUDED.ocupacao,
|
||||
apelido = EXCLUDED.apelido;",
|
||||
new
|
||||
{
|
||||
idcandidato = candidato.IdCandidato,
|
||||
cpf = candidato.Cpf,
|
||||
nome = candidato.Nome,
|
||||
apelido = candidato.Apelido,
|
||||
datanascimento = candidato.DataNascimento,
|
||||
email = candidato.Email,
|
||||
sexo = candidato.Sexo,
|
||||
@ -47,13 +49,14 @@ namespace OpenCand.Repository
|
||||
using (var connection = new NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
await connection.ExecuteAsync(@"
|
||||
INSERT INTO candidato_mapping (idcandidato, cpf, nome, sqcandidato, ano, tipoeleicao, siglauf, nomeue, cargo, nrcandidato, sgpartido, resultado)
|
||||
VALUES (@idcandidato, @cpf, @nome, @sqcandidato, @ano, @tipoeleicao, @siglauf, @nomeue, @cargo, @nrcandidato, @sgpartido, @resultado);",
|
||||
INSERT INTO candidato_mapping (idcandidato, cpf, nome, apelido, sqcandidato, ano, tipoeleicao, siglauf, nomeue, cargo, nrcandidato, sgpartido, resultado)
|
||||
VALUES (@idcandidato, @cpf, @nome, @apelido, @sqcandidato, @ano, @tipoeleicao, @siglauf, @nomeue, @cargo, @nrcandidato, @sgpartido, @resultado);",
|
||||
new
|
||||
{
|
||||
idcandidato = candidatoMapping.IdCandidato,
|
||||
cpf = candidatoMapping.Cpf,
|
||||
nome = candidatoMapping.Nome,
|
||||
apelido = candidatoMapping.Apelido,
|
||||
sqcandidato = candidatoMapping.SqCandidato,
|
||||
ano = candidatoMapping.Ano,
|
||||
tipoeleicao = candidatoMapping.TipoEleicao,
|
||||
|
@ -8,6 +8,7 @@ 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),
|
||||
@ -16,12 +17,14 @@ CREATE TABLE candidato (
|
||||
ocupacao VARCHAR(150)
|
||||
);
|
||||
CREATE INDEX idx_candidato_nome ON candidato (nome);
|
||||
CREATE INDEX idx_candidato_apelido ON candidato (apelido);
|
||||
|
||||
-- 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 TEXT,
|
||||
ano INT NOT NULL,
|
||||
tipoeleicao VARCHAR(50),
|
||||
@ -36,6 +39,7 @@ CREATE TABLE candidato_mapping (
|
||||
);
|
||||
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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user