templates

package
v0.1.5-beta Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2025 License: MIT Imports: 6 Imported by: 0

README

# {{.ProjectName}}

Projeto criado com **Gaver Framework** - Um framework web em Go com CLI, geração de código e ORM estilo Django.

## 🚀 Começando

### Pré-requisitos

- Go 1.24.3 ou superior
- {{.DatabaseDriver}} ({{if eq .DatabaseDriver "postgres"}}PostgreSQL{{else if eq .DatabaseDriver "mysql"}}MySQL{{else}}SQLite{{end}})

### Instalação

1. Instalar dependências:
```bash
go mod tidy
```

2. Configurar variáveis de ambiente:
```bash
cp .env .env.local
# Edite .env com suas configurações
```

3. Executar migrations:
```bash
gaver migrate
```

4. Iniciar servidor:
```bash
go run cmd/server/main.go
```

## 📁 Estrutura do Projeto

```
{{.ProjectName}}/
├── cmd/
│   └── server/          # Aplicação principal
├── config/
│   ├── cors/           # Configuração CORS
│   ├── database/       # Conexão com banco
│   ├── env/            # Variáveis de ambiente
│   ├── middlewares/    # Middlewares HTTP
│   └── routines/       # Tarefas agendadas
├── internal/
│   └── app/
│       ├── handlers/   # Controllers HTTP
│       ├── models/     # Models do banco
│       ├── repositories/ # Camada de dados
│       └── services/   # Lógica de negócio
└── migrations/         # Migrations SQL
```

## 🔄 Sistema de Rotinas

O projeto inclui um sistema de **rotinas agendadas** (tarefas em background) que rodam automaticamente em intervalos definidos.

### Como funciona

As rotinas são definidas em `config/routines/routines.go` e são iniciadas automaticamente com o servidor.

### Exemplos de uso

```go
// Em config/routines/routines.go
func (m *Manager) RegisterDefaultRoutines() {
    // Limpeza de dados a cada 24 horas
    m.Register("cleanup", 24*time.Hour, func() {
        log.Println("Limpando dados antigos...")
        // Seu código aqui
    })

    // Sincronização a cada 1 hora
    m.Register("sync", 1*time.Hour, func() {
        log.Println("Sincronizando dados...")
        // Seu código aqui
    })

    // Verificação a cada 5 minutos
    m.Register("check", 5*time.Minute, func() {
        log.Println("Verificando sistema...")
        // Seu código aqui
    })
}
```

### Casos de uso comuns

- ✅ Limpeza de dados antigos
- ✅ Sincronização com APIs externas
- ✅ Envio de emails/notificações agendadas
- ✅ Geração de relatórios
- ✅ Processamento de filas
- ✅ Health checks do sistema
- ✅ Backup de dados

### Desabilitar rotinas

Para desabilitar o sistema de rotinas, comente as linhas no `main.go`:

```go
// routineManager := routines.NewManager()
// routineManager.RegisterDefaultRoutines()
// routineManager.Start()
// defer routineManager.Stop()
```

## 🛠️ Comandos Gaver

### Gerar Model

```bash
gaver generate model User name:string email:string:unique age:int
```

### Gerar Handler

```bash
gaver generate handler User
```

### Migrations

```bash
# Criar migration
gaver migrate:create nome_da_migration

# Executar migrations pendentes
gaver migrate

# Ver status
gaver migrate:status

# Reverter última migration
gaver migrate:rollback
```

## 📝 API Endpoints

### Rotas Básicas

- `GET /` - Página inicial
- `GET /health` - Health check
- `GET /api/v1/ping` - Teste de conectividade

### Adicionar novas rotas

Em `cmd/server/main.go`:

```go
api := router.Group("/api/v1")
{
    // Suas rotas aqui
    api.GET("/users", userHandler.List)
    api.POST("/users", userHandler.Create)
    api.GET("/users/:id", userHandler.Get)
    api.PUT("/users/:id", userHandler.Update)
    api.DELETE("/users/:id", userHandler.Delete)
}
```

## 🔐 Middlewares

### Disponíveis

- **Logger** - Registra todas as requisições
- **CORS** - Configuração de CORS
- **Auth** - Autenticação (implementar)
- **RateLimiter** - Limite de requisições (implementar)
- **APIKeyAuth** - Autenticação via API Key (implementar)

### Aplicar middleware

```go
// Global
router.Use(middlewares.Auth())

// Em grupo específico
api := router.Group("/api/v1")
api.Use(middlewares.APIKeyAuth())
{
    api.GET("/protected", handler)
}

// Em rota específica
router.GET("/admin", middlewares.Auth(), adminHandler)
```

## 🗄️ Banco de Dados

### Configuração

Configure em `.env`:

```env
DB_HOST=localhost
DB_PORT={{.DatabasePort}}
DB_USER={{.DatabaseUser}}
DB_PASSWORD=sua_senha
DB_NAME={{.ProjectName}}
```

### Conexão

A conexão é estabelecida automaticamente no `main.go`. Para usar em outros arquivos:

```go
import "{{.ProjectName}}/config/database"

// Usar a instância global
database.DB.Find(&users)
```

## 📦 Dependências

- **Gin** - Framework HTTP
- **GORM** - ORM
- **godotenv** - Variáveis de ambiente

## 🤝 Contribuindo

1. Fork o projeto
2. Crie uma branch (`git checkout -b feature/MinhaFeature`)
3. Commit suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)
4. Push para a branch (`git push origin feature/MinhaFeature`)
5. Abra um Pull Request

## 📄 Licença

Este projeto está sob a licença MIT.

---

**Desenvolvido com ❤️ usando Gaver Framework**

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TemplatesFS embed.FS

Functions

func ListTemplates

func ListTemplates() ([]string, error)

ListTemplates lista todos os templates disponíveis

Types

type Generator

type Generator struct {
	OutputPath string
}

Generator gera código usando templates embarcados

func New

func New(outputPath string) *Generator

New cria um gerador com templates embarcados

func (*Generator) Generate

func (g *Generator) Generate(templateName string, outputFile string, data interface{}) error

Generate processa um template embarcado e gera o arquivo

Jump to

Keyboard shortcuts

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