descritor

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2020 License: MIT Imports: 6 Imported by: 4

README

Descritor

Tests

Estrutura de dados que descreve os dados armazenados pelo candidatos.info. Também exporta métodos que auxiliam na conversão entre os formatos.

Guia para alteraçōes de schema

Pré-requisitos

Sempre que houver necessidade de alterar o schema da estrutura de candidatura siga os seguintes passos:

  1. Clone o repositório;
  2. Crie uma nova branch para fazer as novas alteraçōes;
  3. Faça no arquivo candidatura.proto as alterações necessárias;
  4. Compile o protocol buffer com o seguinte comando:
$ protoc --go_out=. --proto_path=. candidatura.proto
  1. Com cuidado edite o arquivo gerado, candidatura.pb.go, e insira as devidas tags para formato JSON e CSV;
  2. Rode os testes do pacote e eles devem quebrar por conta de suas alteraçōes;
  3. Corrija os testes e quando tiver a suite de testes verde abra um pull request neste repositório e solicite avaliação de um dos mantenedores;

Documentation

Index

Constants

View Source
const (
	// CandidaturesCollection é o nome da coleção das candidaturas.
	CandidaturesCollection = "candidatures"
	// LocationsCollection é o nome da coleção de estados e suas cidades
	LocationsCollection = "locations"
)

Variables

View Source
var (
	// RolesMap is as map that create alias for candidates roles
	RolesMap = map[string]string{
		"VEREADOR":      "LM",
		"VICE-PREFEITO": "VEM",
		"PREFEITO":      "EM",
	}
)

Functions

func ToCSV

func ToCSV(c []Candidatura) ([]byte, error)

ToCSV converte a candidatura para um conjunto de strings

Types

type CandidateForDB

type CandidateForDB struct {
	SequencialCandidate string   `datastore:"sequencial_candidate,omitempty" bson:"sequencial_candidate,omitempty"` // ID sequencial do candidato no sistema do TSE.
	Description         string   `datastore:"description,omitempty" bson:"description,omitempty"`                   // Description do candidato.
	Biography           string   `datastore:"biography,omitempty" bson:"biography,omitempty"`                       // Biography do candidato.
	PhotoURL            string   `datastore:"photo_url,omitempty" bson:"photo_url,omitempty"`                       // URL da foto do candidato.
	LegalCode           string   `datastore:"legal_code,omitempty" bson:"legal_code,omitempty"`                     // CPF do candidato.
	Party               string   `datastore:"party,omitempty" bson:"party,omitempty"`                               // Partido do candidato.
	Name                string   `datastore:"name,omitempty" bson:"name,omitempty"`                                 // Nome natural de pessoa física do candidato.
	BallotName          string   `datastore:"ballot_name,omitempty" bson:"ballot_name,omitempty"`                   // Nome do candidato na urna.
	BallotNumber        int      `datastore:"ballot_number,omitempty" bson:"ballot_number,omitempty"`               // Número do candidato na urna.
	Email               string   `datastore:"email,omitempty" bson:"email,omitempty"`                               // Email do candidato.
	Role                string   `datastore:"role,omitempty" bson:"role,omitempty"`                                 // Cargo do candidato (como vereador ou prefeito).
	State               string   `datastore:"state,omitempty" bson:"state,omitempty"`                               // Estado da eleição.
	City                string   `datastore:"city,omitempty" bson:"city,omitempty"`                                 // Cidade da eleição.
	Year                int      `datastore:"year,omitempty" bson:"year,omitempty"`                                 // Ano da eleição.
	Tags                []string `datastore:"tags,omitempty" bson:"tags,omitempty"`                                 // Tags do candidato.
	Gender              string   `datastore:"gender,omitempty" bson:"gender,omitempty"`                             // Gênero do candidato.
	Transparency        float64  `datastore:"transparency,omitempty" bson:"transparency,omitempty"`                 // Porcentagem de transparência do candidato.
	Contact             *Contact `datastore:"contact,omitempty" bson:"contact,omitempty"`                           // Dados de contato do candidato.
	Recurrent           bool     `datastore:"recurrent,omitempty" bson:"recurrent,omitempty"`                       // Flag que indica se candidato participou do último pleito.
}

CandidateForDB é uma struct que contem alguns dos atributos da struct Candidatura. Essa struct é usada somente para persistência em banco e para atender requisitos da UI do site.

type Candidato

type Candidato struct {
	UF                   string               `protobuf:"bytes,1,opt,name=UF,proto3" json:"uf_origem" csv:"uf_origem"`
	Municipio            string               `protobuf:"bytes,2,opt,name=Municipio,proto3" json:"municipio_origem" csv:"municipio_origem"`
	Nascimento           *timestamp.Timestamp `protobuf:"bytes,3,opt,name=Nascimento,proto3" json:"nascimento" csv:"nascimento"`
	TituloEleitoral      string               `protobuf:"bytes,4,opt,name=TituloEleitoral,proto3" json:"titulo_eleitoral" csv:"titulo_eleitoral"`
	Genero               string               `protobuf:"bytes,5,opt,name=Genero,proto3" json:"genero" csv:"genero"`
	GrauInstrucao        string               `protobuf:"bytes,6,opt,name=GrauInstrucao,proto3" json:"grau_instrucao" csv:"grau_instrucao"`
	EstadoCivil          string               `protobuf:"bytes,7,opt,name=EstadoCivil,proto3" json:"estado_civil" csv:"estado_civil"`
	Raca                 string               `protobuf:"bytes,8,opt,name=Raca,proto3" json:"raca" csv:"raca"`
	Ocupacao             string               `protobuf:"bytes,9,opt,name=Ocupacao,proto3" json:"ocupacao" csv:"ocupacao"`
	CPF                  string               `protobuf:"bytes,10,opt,name=CPF,proto3" json:"cpf" csv:"cpf"`
	Nome                 string               `protobuf:"bytes,11,opt,name=Nome,proto3" json:"nome" csv:"nome"`
	Email                string               `protobuf:"bytes,12,opt,name=Email,proto3" json:"email" csv:"email"`
	PhotoURL             string               `protobuf:"bytes,13,opt,name=PhotoURL,proto3" json:"photo_url" csv:"photo_url"`
	Site                 string               `protobuf:"bytes,14,opt,name=Site,proto3" json:"site" csv:"site"`
	Instagram            string               `protobuf:"bytes,15,opt,name=Instagram,proto3" json:"instagram" csv:"instagram"`
	Twitter              string               `protobuf:"bytes,16,opt,name=Twitter,proto3" json:"twitter" csv:"twitter"`
	Facebook             string               `protobuf:"bytes,17,opt,name=Facebook,proto3" json:"facebook" csv:"facebook"`
	Biografia            string               `protobuf:"bytes,18,opt,name=Biografia,proto3" json:"biografia" csv:"biografia"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-" csv:"-"`
	XXX_unrecognized     []byte               `json:"-" csv:"-"`
	XXX_sizecache        int32                `json:"-" csv:"-"`
}

func (*Candidato) Descriptor

func (*Candidato) Descriptor() ([]byte, []int)

func (*Candidato) GetBiografia

func (m *Candidato) GetBiografia() string

func (*Candidato) GetCPF

func (m *Candidato) GetCPF() string

func (*Candidato) GetEmail

func (m *Candidato) GetEmail() string

func (*Candidato) GetEstadoCivil

func (m *Candidato) GetEstadoCivil() string

func (*Candidato) GetFacebook

func (m *Candidato) GetFacebook() string

func (*Candidato) GetGenero

func (m *Candidato) GetGenero() string

func (*Candidato) GetGrauInstrucao

func (m *Candidato) GetGrauInstrucao() string

func (*Candidato) GetInstagram

func (m *Candidato) GetInstagram() string

func (*Candidato) GetMunicipio

func (m *Candidato) GetMunicipio() string

func (*Candidato) GetNascimento

func (m *Candidato) GetNascimento() *timestamp.Timestamp

func (*Candidato) GetNome

func (m *Candidato) GetNome() string

func (*Candidato) GetOcupacao

func (m *Candidato) GetOcupacao() string

func (*Candidato) GetPhotoURL

func (m *Candidato) GetPhotoURL() string

func (*Candidato) GetRaca

func (m *Candidato) GetRaca() string

func (*Candidato) GetSite

func (m *Candidato) GetSite() string

func (*Candidato) GetTituloEleitoral

func (m *Candidato) GetTituloEleitoral() string

func (*Candidato) GetTwitter

func (m *Candidato) GetTwitter() string

func (*Candidato) GetUF

func (m *Candidato) GetUF() string

func (*Candidato) ProtoMessage

func (*Candidato) ProtoMessage()

func (*Candidato) Reset

func (m *Candidato) Reset()

func (*Candidato) String

func (m *Candidato) String() string

func (*Candidato) XXX_DiscardUnknown

func (m *Candidato) XXX_DiscardUnknown()

func (*Candidato) XXX_Marshal

func (m *Candidato) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Candidato) XXX_Merge

func (m *Candidato) XXX_Merge(src proto.Message)

func (*Candidato) XXX_Size

func (m *Candidato) XXX_Size() int

func (*Candidato) XXX_Unmarshal

func (m *Candidato) XXX_Unmarshal(b []byte) error

type Candidatura

type Candidatura struct {
	Legislatura           int64      `protobuf:"varint,1,opt,name=Legislatura,proto3" json:"leg" csv:"leg"`
	Cargo                 string     `protobuf:"bytes,2,opt,name=Cargo,proto3" json:"cargo" csv:"cargo"`
	UF                    string     `protobuf:"bytes,3,opt,name=UF,proto3" json:"uf" csv:"uf"`
	Municipio             string     `protobuf:"bytes,4,opt,name=Municipio,proto3" json:"municipio" csv:"municipio"`
	NumeroUrna            int64      `protobuf:"varint,5,opt,name=NumeroUrna,proto3" json:"numero_urna" csv:"numero_urna"`
	NomeUrna              string     `protobuf:"bytes,6,opt,name=NomeUrna,proto3" json:"nome_urna" csv:"nome_urna"`
	Aptdao                string     `protobuf:"bytes,7,opt,name=Aptdao,proto3" json:"aptidao" csv:"aptidao"`
	Deferimento           string     `protobuf:"bytes,8,opt,name=Deferimento,proto3" json:"deferimento" csv:"deferimento"`
	TipoAgremiacao        string     `protobuf:"bytes,9,opt,name=TipoAgremiacao,proto3" json:"tipo_agremiacao" csv:"tipo_agremiacao"`
	NumeroPartido         int64      `protobuf:"varint,10,opt,name=NumeroPartido,proto3" json:"numero_partio" csv:"numero_partido"`
	LegendaPartido        string     `protobuf:"bytes,11,opt,name=LegendaPartido,proto3" json:"legenda_partido" csv:"legenda_partido"`
	NomePartido           string     `protobuf:"bytes,12,opt,name=NomePartido,proto3" json:"nome_partido" csv:"nome_partido"`
	NomeColigacao         string     `protobuf:"bytes,13,opt,name=NomeColigacao,proto3" json:"nome_coligacao" csv:"nome_coligacao"`
	PartidosColigacao     string     `protobuf:"bytes,14,opt,name=PartidosColigacao,proto3" json:"partidos_coligacao" csv:"partidos_coligacao"`
	DeclarouBens          bool       `protobuf:"varint,15,opt,name=DeclarouBens,proto3" json:"declarou_bens" csv:"declarou_bens"`
	SituacaoPrimeiroTurno string     `protobuf:"bytes,16,opt,name=SituacaoPrimeiroTurno,proto3" json:"situacao_1turno" csv:"situacao_1turno"`
	SituacaoSegundoTurno  string     `protobuf:"bytes,17,opt,name=SituacaoSegundoTurno,proto3" json:"situacao_2turno" csv:"situacao_2turno"`
	SequencialCandidato   string     `protobuf:"bytes,18,opt,name=SequencialCandidato,proto3" json:"sequencial_candidato" csv:"sequencial_candidato"`
	Descricao             string     `protobuf:"bytes,19,opt,name=Descricao,proto3" json:"descricao" csv:"descricao"`
	Candidato             *Candidato `protobuf:"bytes,20,opt,name=Candidato,proto3" json:"candidato" csv:"-"`
	XXX_NoUnkeyedLiteral  struct{}   `json:"-" csv:"-"`
	XXX_unrecognized      []byte     `json:"-" csv:"-"`
	XXX_sizecache         int32      `json:"-" csv:"-"`
}

func FromJSON

func FromJSON(b []byte) (*Candidatura, error)

FromJSON cria uma instância de candidatura preenchida com os dados contidos no JSON passado como parâmetro.

func (*Candidatura) Descriptor

func (*Candidatura) Descriptor() ([]byte, []int)

func (*Candidatura) GetAptdao

func (m *Candidatura) GetAptdao() string

func (*Candidatura) GetCandidato

func (m *Candidatura) GetCandidato() *Candidato

func (*Candidatura) GetCargo

func (m *Candidatura) GetCargo() string

func (*Candidatura) GetDeclarouBens

func (m *Candidatura) GetDeclarouBens() bool

func (*Candidatura) GetDeferimento

func (m *Candidatura) GetDeferimento() string

func (*Candidatura) GetDescricao

func (m *Candidatura) GetDescricao() string

func (*Candidatura) GetLegendaPartido

func (m *Candidatura) GetLegendaPartido() string

func (*Candidatura) GetLegislatura

func (m *Candidatura) GetLegislatura() int64

func (*Candidatura) GetMunicipio

func (m *Candidatura) GetMunicipio() string

func (*Candidatura) GetNomeColigacao

func (m *Candidatura) GetNomeColigacao() string

func (*Candidatura) GetNomePartido

func (m *Candidatura) GetNomePartido() string

func (*Candidatura) GetNomeUrna

func (m *Candidatura) GetNomeUrna() string

func (*Candidatura) GetNumeroPartido

func (m *Candidatura) GetNumeroPartido() int64

func (*Candidatura) GetNumeroUrna

func (m *Candidatura) GetNumeroUrna() int64

func (*Candidatura) GetPartidosColigacao

func (m *Candidatura) GetPartidosColigacao() string

func (*Candidatura) GetSequencialCandidato

func (m *Candidatura) GetSequencialCandidato() string

func (*Candidatura) GetSituacaoPrimeiroTurno

func (m *Candidatura) GetSituacaoPrimeiroTurno() string

func (*Candidatura) GetSituacaoSegundoTurno

func (m *Candidatura) GetSituacaoSegundoTurno() string

func (*Candidatura) GetTipoAgremiacao

func (m *Candidatura) GetTipoAgremiacao() string

func (*Candidatura) GetUF

func (m *Candidatura) GetUF() string

func (*Candidatura) ProtoMessage

func (*Candidatura) ProtoMessage()

func (*Candidatura) Reset

func (m *Candidatura) Reset()

func (*Candidatura) String

func (m *Candidatura) String() string

func (*Candidatura) ToJSON

func (c *Candidatura) ToJSON() ([]byte, error)

ToJSON converte a candidatura para JSON.

func (*Candidatura) XXX_DiscardUnknown

func (m *Candidatura) XXX_DiscardUnknown()

func (*Candidatura) XXX_Marshal

func (m *Candidatura) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Candidatura) XXX_Merge

func (m *Candidatura) XXX_Merge(src proto.Message)

func (*Candidatura) XXX_Size

func (m *Candidatura) XXX_Size() int

func (*Candidatura) XXX_Unmarshal

func (m *Candidatura) XXX_Unmarshal(b []byte) error

type Contact

type Contact struct {
	IconURL string `datastore:"icon_url,omitempty" bson:"icon_url,omitempty"` // Ícone do contato, podendo ser o link para a logo do Instagram, ou Facebook...
	Link    string `datastore:"link,omitempty" bson:"link,omitempty"`         // Link de contato, podendo ser o link para o Instagram, um site, ou o telefone do candidato.
}

Contact é um struct para armazenar os dados de contato do candidato.

type Location

type Location struct {
	State  string   `datastore:"state" bson:"state,omitempty"`   // Estado que está ocorrendo uma eleição.
	Cities []string `datastore:"cities" bson:"cities,omitempty"` // Cidades do estado onde está ocorrendo uma eleição.
}

Location é uma struct que contem um estado que está ocorrendo a eleição e suas cidades.

type VotingCity

type VotingCity struct {
	Year       int               `datastore:"year,omitempty"`       // Ano de eleição.
	City       string            `datastore:"city,omitempty"`       // Cidade da eleição.
	State      string            `datastore:"state,omitempty"`      // Estado da eleição.
	Candidates []*CandidateForDB `datastore:"candidates,omitempty"` // Lista com os candidatos da cidade.
}

VotingCity é a struct que encapsula as candidaturas de uma cidade. Para cada eleição salvamos as candidaturas agrupadas todas por cidade, ou seja, uma eleição no Brasil vai resultar em 5570 inserçōes uma vez que o Brasil possui esta quantidade de cidades (https://pt.wikipedia.org/wiki/Lista_de_estados_brasileiros_por_n%C3%BAmero_de_munic%C3%ADpios).

Essa struct é usada pelo projeto resumidor de banco de dados (https://github.com/candidatos-info/resumidores) para fazer a escrita no banco e pelo site (https://github.com/candidatos-info/site) para renderizar dados no frontend.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL