mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 02:51:46 +00:00
chore(release): v2.4.4
Versão dedicada a remover a dependência de pgcrypto e a enxugar os backups. CHANGELOG, badge do README e fluxo de restore atualizados; script pnpm db:extensions removido do package.json. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
27
CHANGELOG.md
27
CHANGELOG.md
@@ -7,6 +7,33 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [2.4.4] - 2026-04-25
|
||||
|
||||
Esta versão remove a dependência da extensão `pgcrypto` do PostgreSQL para a geração do `share_code` em pagadores. O default a nível de banco (`gen_random_bytes`) foi removido — agora a aplicação gera o código sempre via `crypto.randomBytes` do Node.js, num utilitário compartilhado. A consequência prática é que o setup inicial fica mais simples: não há mais script de habilitação de extensão, nem etapa extra no primeiro `db:push`, e bancos restaurados de dumps externos não precisam ter `pgcrypto` instalada. O script de backup também foi enxugado para gerar dumps focados nos schemas relevantes (`public` e `drizzle`), descartando os schemas internos do Supabase e eliminando os ~148 erros de restore em PostgreSQL padrão.
|
||||
|
||||
### Alterado
|
||||
|
||||
- Schema: coluna `share_code` em `pagadores` perdeu o default `substr(encode(gen_random_bytes(24), 'base64'), 1, 24)` — campo continua `NOT NULL` e a aplicação passa a fornecer o valor explicitamente em todas as inserções
|
||||
- Pagadores: nova função utilitária `generateShareCode()` em `src/shared/lib/payers/share-code.ts` (server-only) — usa `crypto.randomBytes(18).toString("base64url").slice(0, 24)`
|
||||
- Pagadores: `createPayerAction`, `ensureDefaultPagadorForUser`, `resetUserAppData` (settings) e `mock-data.ts` agora chamam `generateShareCode()` ao inserir um pagador
|
||||
- Backup: `scripts/backup.sh` agora dumpa apenas os schemas `public` e `drizzle` — schemas internos do Supabase (`auth`, `realtime`, `storage`, `vault`, `graphql`, `graphql_public`, `extensions`, `pgbouncer`) e suas extensions/roles deixam de poluir os dumps. Restaurações em PostgreSQL padrão passam a executar sem os ~148 erros de `role/extension does not exist`
|
||||
|
||||
### Removido
|
||||
|
||||
- Pasta `scripts/postgres/` (continha `init.sql` e `enable-extensions.ts`)
|
||||
- Script `pnpm db:extensions` no `package.json`
|
||||
- Referências ao `pnpm db:extensions` no README
|
||||
|
||||
### Corrigido
|
||||
|
||||
- Migrations: conflito de numeração resolvido — `0027_fancy_reaper` renomeado para `0028_fancy_reaper` (o número 0027 já estava ocupado pelo arquivo órfão `0027_glorious_mindworm`); journal e snapshot atualizados
|
||||
|
||||
### Documentação
|
||||
|
||||
- README: seção Backup atualizada — arquivos gerados agora especificam que apenas os schemas `public` e `drizzle` são dumpados
|
||||
- README: seção Restore reescrita com o fluxo correto para banco Docker (`DROP SCHEMA public CASCADE` + `pg_restore --clean --if-exists --disable-triggers`)
|
||||
- README: comando rápido de Docker Compose de backup/restore substituído por `pnpm backup`
|
||||
|
||||
## [2.4.3] - 2026-04-25
|
||||
|
||||
Esta versão amplia o trabalho com lançamentos divididos: anexos passam a ser visíveis para pessoas com acesso compartilhado, a importação para conta própria copia os arquivos de forma independente e a edição ganha a opção de aplicar a alteração nos dois lados do par. Três caminhos de deleção foram corrigidos para não deixar arquivos órfãos no storage. Também traz refresh visual nos badges de tipo e radio buttons, prefetch server-side de logos para reduzir chamadas de API no dashboard, e ajustes pontuais no healthcheck do container e em rótulos da UI.
|
||||
|
||||
36
README.md
36
README.md
@@ -8,7 +8,7 @@
|
||||
|
||||
> **⚠️ Não há versão online hospedada.** Você precisa clonar o repositório e rodar localmente ou no seu próprio servidor.
|
||||
|
||||
[](CHANGELOG.md)
|
||||
[](CHANGELOG.md)
|
||||
[](https://nextjs.org/)
|
||||
[](https://www.typescriptlang.org/)
|
||||
[](https://www.postgresql.org/)
|
||||
@@ -196,13 +196,10 @@ cp .env.example .env
|
||||
# 4. Suba o banco
|
||||
pnpm docker:db
|
||||
|
||||
# 5. Habilite extensões do PostgreSQL (apenas no primeiro setup)
|
||||
pnpm db:extensions
|
||||
|
||||
# 6. Aplique o schema no banco (apenas no primeiro setup)
|
||||
# 5. Aplique o schema no banco (apenas no primeiro setup)
|
||||
pnpm db:push
|
||||
|
||||
# 7. Inicie o app com hot-reload
|
||||
# 6. Inicie o app com hot-reload
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
@@ -240,7 +237,6 @@ pnpm lint:fix # Biome auto-fix
|
||||
pnpm db:generate # Gerar migrations
|
||||
pnpm db:migrate # Executar migrations
|
||||
pnpm db:push # Push schema direto (dev)
|
||||
pnpm db:extensions # Habilitar extensões PostgreSQL (rodar uma vez)
|
||||
pnpm db:studio # Drizzle Studio (UI visual)
|
||||
```
|
||||
|
||||
@@ -291,8 +287,7 @@ docker compose up -d app
|
||||
docker compose exec app sh # Shell da aplicação
|
||||
docker compose exec db psql -U openmonetis -d openmonetis_db # Shell do banco
|
||||
docker compose ps # Status
|
||||
docker compose exec db pg_dump -U openmonetis openmonetis_db > backup.sql # Backup
|
||||
docker compose exec -T db psql -U openmonetis -d openmonetis_db < backup.sql # Restore
|
||||
pnpm backup # Backup (ver seção Backup)
|
||||
```
|
||||
|
||||
### Customizando portas
|
||||
@@ -318,9 +313,9 @@ Cada execução gera **3 arquivos** em `backup/`:
|
||||
|
||||
| Arquivo | Conteúdo | Uso |
|
||||
|---|---|---|
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.dump` | Dump custom do PostgreSQL (binário) | Restore completo via `pg_restore` |
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.sql.gz` | Dump SQL completo compactado | Inspeção manual, portabilidade |
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.data.sql.gz` | Apenas os dados da schema `public` | Migração parcial, seed de outro ambiente |
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.dump` | Dump custom dos schemas `public` + `drizzle` | Restore completo via `pg_restore` |
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.sql.gz` | Dump SQL compactado dos schemas `public` + `drizzle` | Inspeção manual, portabilidade |
|
||||
| `openmonetis_YYYY-MM-DD_HH-MM.data.sql.gz` | Apenas os dados do schema `public` (sem DDL) | Migração parcial, seed de outro ambiente |
|
||||
|
||||
### Modos de conexão
|
||||
|
||||
@@ -354,16 +349,19 @@ crontab -e
|
||||
### Restore
|
||||
|
||||
```bash
|
||||
# A partir do .dump (recomendado — mais rápido)
|
||||
pg_restore --clean --no-owner --no-privileges \
|
||||
-d "postgresql://user:senha@host:5432/openmonetis_db" \
|
||||
backup/openmonetis_YYYY-MM-DD_HH-MM.dump
|
||||
# 1. Zerar o banco
|
||||
docker exec <container-db> psql -U openmonetis -d openmonetis_db \
|
||||
-c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
||||
|
||||
# A partir do .sql.gz (banco local via Docker)
|
||||
gunzip -c backup/openmonetis_YYYY-MM-DD_HH-MM.sql.gz | \
|
||||
docker compose exec -T db psql -U openmonetis -d openmonetis_db
|
||||
# 2. Restaurar schema + dados (um comando)
|
||||
docker exec -i <container-db> pg_restore \
|
||||
-U openmonetis -d openmonetis_db \
|
||||
--clean --if-exists --disable-triggers --no-owner --no-privileges \
|
||||
< backup/openmonetis_YYYY-MM-DD_HH-MM.dump
|
||||
```
|
||||
|
||||
> `--disable-triggers` é necessário para evitar erros de FK durante o restore (os dados são inseridos fora de ordem). O usuário `openmonetis` tem permissão para isso.
|
||||
|
||||
---
|
||||
|
||||
## ☁️ Storage S3 Compatível
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "openmonetis",
|
||||
"version": "2.4.3",
|
||||
"version": "2.4.4",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.33.0",
|
||||
"scripts": {
|
||||
@@ -15,7 +15,6 @@
|
||||
"db:generate": "drizzle-kit generate",
|
||||
"db:migrate": "drizzle-kit migrate",
|
||||
"db:push": "drizzle-kit push",
|
||||
"db:extensions": "tsx scripts/postgres/enable-extensions.ts",
|
||||
"db:studio": "drizzle-kit studio",
|
||||
"postinstall": "cp node_modules/pdfjs-dist/build/pdf.worker.min.mjs public/pdf.worker.min.mjs",
|
||||
"docker:up": "docker compose up -d",
|
||||
|
||||
Reference in New Issue
Block a user