transform

package
v0.0.0-...-76d3d19 Latest Latest
Warning

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

Go to latest
Published: Dec 30, 2025 License: MIT Imports: 28 Imported by: 0

Documentation

Overview

Package transform includes these cast functions to allow the project to accomplish two things:

  • convert strings from the CSV files to other formats (e.g. int, float32, time.Time);
  • differentiate empty values (such as 0 for int) from missing values.

This is achieved using pointers, so we have nil as a marker for missing value.

Since our use case involves serving this data in JSON format, this is crucial so we can use `null` when there is no value, and "0" when the value of an integer, for example, is 0.

Index

Constants

View Source
const (
	// MaxParallelDBQueries is the default for maximum number of parallels save
	// queries sent to the database
	MaxParallelDBQueries = 8

	// MaxParallelKVWrites is the default for maximum number of parallels
	// writes on the key-value storage (Badger)
	MaxParallelKVWrites = 1024

	// BatchSize determines the size of the batches used to create the initial JSON
	// data in the database.
	BatchSize = 8192
)

Variables

This section is empty.

Functions

func CompanyJSONFields

func CompanyJSONFields() []string

JSONFields lists the field names/paths for the JSON of a company.

func NationalTreasureFile

func NationalTreasureFile(dir string) (string, *os.File, error)

NationalTreasureFilePath deals with backward compatibility: until May/2025 the file was named TABMUN.CSV. It returns the right file path testing if the file exist in lower case or in upper case.

func Transform

func Transform(dir string, db database, maxDB, maxKV, s int, p bool) error

Transform the downloaded files for company venues creating a database record per CNPJ

func ValidateIndexes

func ValidateIndexes(idxs []string) error

Types

type CNAE

type CNAE struct {
	Codigo    int    `json:"codigo" bson:"codigo"`
	Descricao string `json:"descricao" bson:"descricao"`
}

type Company ��

type Company struct {
	CNPJ                             string        `json:"cnpj" bson:"cnpj"`
	IdentificadorMatrizFilial        *int          `json:"identificador_matriz_filial" bson:"identificador_matriz_filial"`
	DescricaoMatrizFilial            *string       `json:"descricao_identificador_matriz_filial" bson:"descricao_identificador_matriz_filial"`
	NomeFantasia                     string        `json:"nome_fantasia" bson:"nome_fantasia"`
	SituacaoCadastral                *int          `json:"situacao_cadastral" bson:"situacao_cadastral"`
	DescricaoSituacaoCadastral       *string       `json:"descricao_situacao_cadastral" bson:"descricao_situacao_cadastral"`
	DataSituacaoCadastral            *date         `json:"data_situacao_cadastral" bson:"data_situacao_cadastral"`
	MotivoSituacaoCadastral          *int          `json:"motivo_situacao_cadastral" bson:"motivo_situacao_cadastral"`
	DescricaoMotivoSituacaoCadastral *string       `json:"descricao_motivo_situacao_cadastral" bson:"descricao_motivo_situacao_cadastral"`
	NomeCidadeNoExterior             string        `json:"nome_cidade_no_exterior" bson:"nome_cidade_no_exterior"`
	CodigoPais                       *int          `json:"codigo_pais" bson:"codigo_pais"`
	Pais                             *string       `json:"pais" bson:"pais"`
	DataInicioAtividade              *date         `json:"data_inicio_atividade" bson:"data_inicio_atividade"`
	CNAEFiscal                       *int          `json:"cnae_fiscal" bson:"cnae_fiscal"`
	CNAEFiscalDescricao              *string       `json:"cnae_fiscal_descricao" bson:"cnae_fiscal_descricao"`
	DescricaoTipoDeLogradouro        string        `json:"descricao_tipo_de_logradouro" bson:"descricao_tipo_de_logradouro"`
	Logradouro                       string        `json:"logradouro" bson:"logradouro"`
	Numero                           string        `json:"numero" bson:"numero"`
	Complemento                      string        `json:"complemento" bson:"complemento"`
	Bairro                           string        `json:"bairro" bson:"bairro"`
	CEP                              string        `json:"cep" bson:"cep"`
	UF                               string        `json:"uf" bson:"uf"`
	CodigoMunicipio                  *int          `json:"codigo_municipio" bson:"codigo_municipio"`
	CodigoMunicipioIBGE              *int          `json:"codigo_municipio_ibge" bson:"codigo_municipio_ibge"`
	Municipio                        *string       `json:"municipio" bson:"municipio"`
	Telefone1                        string        `json:"ddd_telefone_1" bson:"ddd_telefone_1"`
	Telefone2                        string        `json:"ddd_telefone_2" bson:"ddd_telefone_2"`
	Fax                              string        `json:"ddd_fax" bson:"ddd_fax"`
	Email                            *string       `json:"email" bson:"email"`
	SituacaoEspecial                 string        `json:"situacao_especial" bson:"situacao_especial"`
	DataSituacaoEspecial             *date         `json:"data_situacao_especial" bson:"data_situacao_especial"`
	OpcaoPeloSimples                 *bool         `json:"opcao_pelo_simples" bson:"opcao_pelo_simples"`
	DataOpcaoPeloSimples             *date         `json:"data_opcao_pelo_simples" bson:"data_opcao_pelo_simples"`
	DataExclusaoDoSimples            *date         `json:"data_exclusao_do_simples" bson:"data_exclusao_do_simples"`
	OpcaoPeloMEI                     *bool         `json:"opcao_pelo_mei" bson:"opcao_pelo_mei"`
	DataOpcaoPeloMEI                 *date         `json:"data_opcao_pelo_mei" bson:"data_opcao_pelo_mei"`
	DataExclusaoDoMEI                *date         `json:"data_exclusao_do_mei" bson:"data_exclusao_do_mei"`
	RazaoSocial                      string        `json:"razao_social" bson:"razao_social"`
	CodigoNaturezaJuridica           *int          `json:"codigo_natureza_juridica" bson:"codigo_natureza_juridica"`
	NaturezaJuridica                 *string       `json:"natureza_juridica" bson:"natureza_juridica"`
	QualificacaoDoResponsavel        *int          `json:"qualificacao_do_responsavel" bson:"qualificacao_do_responsavel"`
	CapitalSocial                    *float32      `json:"capital_social" bson:"capital_social"`
	CodigoPorte                      *int          `json:"codigo_porte" bson:"codigo_porte"`
	Porte                            *string       `json:"porte" bson:"porte"`
	EnteFederativoResponsavel        string        `json:"ente_federativo_responsavel" bson:"ente_federativo_responsavel"`
	QuadroSocietario                 []PartnerData `json:"qsa" bson:"qsa"`
	CNAESecundarios                  []CNAE        `json:"cnaes_secundarios" bson:"cnaes_secundarios"`
	RegimeTributario                 TaxRegimes    `json:"regime_tributario" bson:"regime_tributario"`
}

func (*Company) JSON

func (c *Company) JSON() (string, error)

type PartnerData

type PartnerData struct {
	IdentificadorDeSocio                 *int    `json:"identificador_de_socio" bson:"identificador_de_socio"`
	NomeSocio                            string  `json:"nome_socio" bson:"nome_socio"`
	CNPJCPFDoSocio                       string  `json:"cnpj_cpf_do_socio" bson:"cnpj_cpf_do_socio"`
	CodigoQualificacaoSocio              *int    `json:"codigo_qualificacao_socio" bson:"codigo_qualificacao_socio"`
	QualificaoSocio                      *string `json:"qualificacao_socio" bson:"qualificacao_socio"`
	DataEntradaSociedade                 *date   `json:"data_entrada_sociedade" bson:"data_entrada_sociedade"`
	CodigoPais                           *int    `json:"codigo_pais" bson:"codigo_pais"`
	Pais                                 *string `json:"pais" bson:"pais"`
	CPFRepresentanteLegal                string  `json:"cpf_representante_legal" bson:"cpf_representante_legal"`
	NomeRepresentanteLegal               string  `json:"nome_representante_legal" bson:"nome_representante_legal"`
	CodigoQualificacaoRepresentanteLegal *int    `json:"codigo_qualificacao_representante_legal" bson:"codigo_qualificacao_representante_legal"`
	QualificacaoRepresentanteLegal       *string `json:"qualificacao_representante_legal" bson:"qualificacao_representante_legal"`
	CodigoFaixaEtaria                    *int    `json:"codigo_faixa_etaria" bson:"codigo_faixa_etaria"`
	FaixaEtaria                          *string `json:"faixa_etaria" bson:"faixa_etaria"`
}

type TaxRegime

type TaxRegime struct {
	Ano                       int     `json:"ano" bson:"ano"`
	CNPJDaSCP                 *string `json:"cnpj_da_scp" bson:"cnpj_da_scp"`
	FormaDeTributação         string  `json:"forma_de_tributacao" bson:"forma_de_tributacao"`
	QuantidadeDeEscrituracoes int     `json:"quantidade_de_escrituracoes" bson:"quantidade_de_escrituracoes"`
}

type TaxRegimes

type TaxRegimes []TaxRegime

func (TaxRegimes) Len

func (t TaxRegimes) Len() int

func (TaxRegimes) Less

func (t TaxRegimes) Less(i, j int) bool

func (TaxRegimes) Swap

func (t TaxRegimes) Swap(i, j int)