Uma API RESTful desenvolvida em Go para gerenciar cursos e oportunidades de emprego.
erDiagram
CURSO {
int id PK
string titulo
string descricao
int orgao_id FK
int instituicao_id FK
enum modalidade
string local_realizacao
datetime data_inicio
datetime data_termino
datetime data_limite_inscricoes
int numero_vagas
int carga_horaria
string pre_requisitos
boolean certificacao_oferecida
enum status
enum turno
enum formato_aula
string link_inscricao
string contato_duvidas
}
EMPREGO {
int id PK
string titulo
string descricao
int orgao_id FK
int empresa_id FK
enum tipo_contratacao
int numero_vagas
float latitude
float longitude
int salario_min
int salario_max
string beneficios
string pre_requisitos
datetime data_inicio_prevista
datetime data_limite_candidatura
enum status
int escolaridade_id FK
enum jornada_trabalho
enum turno
string contato_duvidas
}
- Go 1.18+
- PostgreSQL
- Docker e Docker Compose (opcional)
- Clone o repositório:
git clone https://github.com/prefeitura-rio/app-go-api.git
cd app-go-api
- Configure as variáveis de ambiente:
cp .env.example .env
# Edite o arquivo .env com suas configurações
- Execute com Docker:
docker-compose up -d
Ou execute localmente:
go mod tidy
go run cmd/server/main.go
- Execute as migrações:
make migrate-up
app-go-api
cmd/
server/ # Ponto de entrada da aplicação
docs/ # Documentação
internal/
config/ # Configurações da aplicação
db/
migrations/ # Migrações do banco de dados
handlers/
v1/ # Handlers da API v1
middlewares/ # Middlewares da aplicação
models/ # Modelos de dados
repository/ # Camada de acesso a dados
router/ # Definição de rotas
services/ # Camada de serviços
migrations/ # Scripts de migração
scripts/ # Scripts utilitários
GET /api/v1/cursos
- Listar cursosPOST /api/v1/cursos
- Criar cursoGET /api/v1/cursos/:id
- Obter curso por IDPUT /api/v1/cursos/:id
- Atualizar cursoDELETE /api/v1/cursos/:id
- Excluir curso
GET /api/v1/empregos
- Listar empregosPOST /api/v1/empregos
- Criar empregoGET /api/v1/empregos/:id
- Obter emprego por IDPUT /api/v1/empregos/:id
- Atualizar empregoDELETE /api/v1/empregos/:id
- Excluir emprego
Este projeto está licenciado sob a Licença MIT.