Code Monkey home page Code Monkey logo

avunico's Introduction

avunico

Microserviço que disponbiliza acesso a dados referentes a Localização de Feiras Livres do Município de São Paulo. A Aplicação foi desenvolvida, obedecendo o protocolo Rest. Todos as operações são executadas obedecendo os Verbos HTML. E quando é necessário a inclusão de informação, é utilizado em formato JSON.

Configurando alguns recursos

Base de Dados

O Banco de Dados utilizado aqui é o MariaDB e as informações pertinentes a tabela que irá conter os dados para o funcionamento do microserviço. Foi extraído do arquivo http://www.prefeitura.sp.gov.br/cidade/secretarias/upload/chamadas/feiras_livres_1429113213.zip, disponibilizado pela Prefeitura de São Paulo.

Criação da Base de Dados

CREATE DATABASE `avunico` 

Criação da Tabela

👉 Importante: As colunas NUMERO, BAIRRO E REFERENCIA não estão com o mesmo tamanho de varchar em relação ao que esta definido no dicionário. Para realização da carga do CSV para evitar o erro de Data truncated for column eu defini um novo tamanho


CREATE TABLE `feiraslivres` (
	`ID` VARCHAR(8) NOT NULL COMMENT 'Número de identificação do estabelecimento georreferenciado por SMDU/Deinfo,SMDU/Deinfo',
        `LONGI` VARCHAR(10) NOT NULL COMMENT 'Longitude da localização do estabelecimento no território do Município, conforme MDC',
	`LATI` VARCHAR(10) NOT NULL COMMENT 'Latitude da localização do estabelecimento no território do Município, conforme MDC',
	`SETCENS` VARCHAR(15)  COMMENT 'Setor censitário,Setor censitário conforme IBGE',
	`AREAP` VARCHAR(13)  COMMENT 'Área de ponderação (agrupamento de setores censitários) conforme IBGE 2010',
	`CODDIST` VARCHAR(9) COMMENT 'Código do Distrito Municipal conforme IBGE',
	`DISTRITO`VARCHAR(18) COMMENT 'Nome do Distrito Municipal',
	`CODSUBPREF` VARCHAR(2) COMMENT 'Código de cada uma das 31 Subprefeituras (2003 a 2012)',
	`SUBPREFE` VARCHAR(25) COMMENT 'Nome da Subprefeitura (31 de 2003 até 2012)',
	`REGIAO5` VARCHAR(6)  COMMENT 'Região conforme divisão do Município em 5 áreas',
	`REGIAO8` VARCHAR(7)  COMMENT 'Região conforme divisão do Município em 8 áreas',
	`NOME_FEIRA` VARCHAR(30)  COMMENT 'Denominação da feira livre atribuída pela Supervisão de Abastecimento',
	`REGISTRO` VARCHAR(6) COMMENT 'Número do registro da feira livre na PMSP',
	`LOGRADOURO` VARCHAR(34) COMMENT 'Nome do logradouro onde se localiza a feira livre',
	`NUMERO` VARCHAR(20) COMMENT 'Um número do logradouro onde se localiza a feira livre',
	`BAIRRO` VARCHAR(30)  COMMENT 'Bairro de localização da feira livre',	
	`REFERENCIA` VARCHAR(40)  COMMENT 'Ponto de referência da localização da feira livre',
	PRIMARY KEY (`ID`)
)
COMMENT='Contém os os dados das feiras livres do Município de São Paulo'
COLLATE='latin1_swedish_ci'

Carga do CSV para a tabela na feiraslivres da base avunico

👉 Importante: No meu ambiente eu usei esse dir C:/CargaFeiraLivre/ para manter o arquivo DEINFO_AB_FEIRASLIVRES_2014.csv, conteúdo do feiras_livres_1429113213.zip. Essa configuração é da escolha do usuário.


LOAD DATA LOCAL INFILE 'C:/CargaFeiraLivre/DEINFO_AB_FEIRASLIVRES_2014.csv'
INTO TABLE feiraslivres
FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(ID,LONGI,LATI,SETCENS,AREAP,CODDIST,DISTRITO,CODSUBPREF,SUBPREFE,REGIAO5,REGIAO8,NOME_FEIRA,REGISTRO,LOGRADOURO,NUMERO,BAIRRO,REFERENCIA)

Variaveis de Ambiente

Os dados necessários para acesso ao banco de dados na minha configuração são mantidos como Variaveis de Ambiente do Sistema Operacional. Acredito que essa seja uma boa prática. No entanto fica a critério do usuário essa configuração.

*** As variaveis são as seguintes ***

strHostPort := os.Getenv("AVUNICO_HOST_PORT")
strUsuario := os.Getenv("AVUNICO_USUARIO")
strPass := os.Getenv("AVUNICO_PASSWORD")
strDbName := os.Getenv("AVUNICO_DB_NAME")

Dependências

Para se conectar a base de dados e realizar as transações foi utilizado o pacote abaixo

go get -u github.com/go-sql-driver/mysql

Rodando a aplicação

Após todas as configurações e inclusão dos dados na base. Utilize uma aplicação de sua preferência para fazer as chamadas aos serviços. Eu utilizo o Postman nos meus testes.

Realizando as chamadas

Alt text

Método GET

localhost:3000/api/v1/feiralivre/DISTRITO/PINHEIROS


Alt text

Método PUT

localhost:3000/api/v1/feiralivre/30

{
		"LOGRADOURO": "NLogradouro",
		"NUMERO":     "23222",
		"BAIRRO":     "TesteBairro",
		"REFERENCIA": "REF"
}


Alt text

Método DELETE

localhost:3000/api/v1/feiralivre/30


Alt text

Método Post

{
		ID:         "901",
		LONGI:      "-1220",
		LATI:       "-23322",
		SETCENS:    "T",
		AREAP:      "A",
		CODDIST:    "C",
		DISTRITO:   "D",
		CODSUBPREF: "C",
		SUBPREFE:   "SS",
		REGIAO5:    "RE",
		REGIAO8:    "R8",
		NOME_FEIRA: "TESTE",
		REGISTRO:   "TR",
		LOGRADOURO: "TL",
		NUMERO:     "NN",
		BAIRRO:     "BB",
		REFERENCIA: "RTT",
	}


Teste Unitário

Alguns arquivos estão com corbetura de teste. Não contemplei todos os arquivos, pois é um assunto que preciso obter mais conhecimento

Comando com output no cmd

go test -cover ./...
?       avunico [no test files]
ok      avunico/avDb    (cached)        coverage: 29.3% of statements
ok      avunico/avServer        (cached)        coverage: 7.1% of statements
ok      avunico/avlog   1.637s  coverage: 55.3% of statements
?       avunico/avmodels        [no test files]


Comando com relatório

O comando abaixo gera um relatório de saída. Mas sua visualização não é muito amigavel. A seguir um comando que executa um Html com os dados do coverage.out

go test -coverprofile=coverage.out ./...


Comando para abrir o relatório para verificação da cobertura

O comando abaixo executa o browser da sua maquina exibindo as func que não passaram pelo teste

go tool cover -html=coverage.out

avunico's People

Contributors

pinablink avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.