# Lacrei Models

Pacote centralizado para os modelos de domínio (`models.py`) do ecossistema Lacrei.

[![Python Version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)

---

## 🎯 Objetivo

Centralizar todos os modelos do Django utilizados pelas aplicações Lacrei, permitindo:

- **Modularidade:** Desacoplar a camada de dados da lógica de aplicação.
- **Reuso:** Serviços diferentes podem consumir os mesmos modelos de forma consistente.
- **Governança e Consistência:** Ponto único de verdade para estrutura de dados.

É uma dependência interna, destinada a ser usada por aplicações como `lacrei-api`.

---

### Configurações Iniciais

1.  **Clone o Repositório, na mesmo local onde se encontra a lacrei-api e a lacrei-migrations:**
```bash
    git clone https://github.com/Lacrei/lacrei-models.git
    cd lacrei-models
```

2.  **Instale as Dependências:**
```bash
    make install
    poetry add lacrei-models
```
---

## ⚙️ Uso

Para testar localmente as mudanças na models antes de pubicar no PyPI:
```bash
poetry add --editable C:/local onde se encontra o lacrei-models
```

Importe os modelos no código:

```python
from lacrei_models.address.models import Address
from lacrei_models.client.models import User
from lacrei_models.appointments.models import Appointment
from lacrei_models.professional.models import Professional
from lacrei_models.notification.models import Notification
from lacrei_models.payment.models import Payment
from lacrei_models.sync.models import GoogleAccount
```

---

**Comandos principais:**

```bash
make test      # Rodar testes
make format    # Formatar código
make lint      # Verificar estilo e erros
make quality   # Rodar todas as verificações
```

---

## � Pre-commit Hooks

O projeto utiliza **pre-commit hooks** para garantir qualidade do código automaticamente antes de cada commit.

### Como funciona

- **Execução automática**: Os hooks rodam antes de cada commit
- **Validação**: Se algum check falhar, o commit é bloqueado
- **Correção automática**: Black e isort corrigem o código automaticamente
- **Re-commit necessário**: Após correções, adicione as mudanças e tente commitar novamente

Os hooks são instalados automaticamente ao executar `make install`.

### Comandos Individuais

Você também pode executar as ferramentas de lint individualmente:

```bash
# Black - Formatar código automaticamente
poetry run black .

# isort - Ordenar e agrupar imports
poetry run isort .

# Flake8 - Verificar estilo e erros (sem alteração automática)
poetry run flake8 .
```

### Bypass de Hooks (Uso Excepcional)

Em casos específicos, você pode pular os hooks:

```bash
git commit --no-verify -m "mensagem"
# ou
git commit -n -m "mensagem"
```

**⚠️ Atenção**: Use apenas em situações excepcionais. O bypass não é recomendado pois os checks do CI continuarão validando o código.

---

## �🚀 Publicação no PyPI

Enviar atualizações para o github em uma nova branch e criar o PR
```bash
    git push origin branch
```
1- Ir até o actions dentro do repositório lacrei-models
2- Clicar em publish package
3- e depois ir em run workflow e selecionar a sua branch
4- A versão to publish deve ser uma versão acima da atual. Verificar no PyPI a ultima versão para evitar conflitos.
