Quellcode durchsuchen

add the informations about how to exec the project

gdias vor 1 Woche
Ursprung
Commit
f1d1b72df9
2 geänderte Dateien mit 143 neuen und 47 gelöschten Zeilen
  1. 143 0
      README.md
  2. 0 47
      TODO.md

+ 143 - 0
README.md

@@ -0,0 +1,143 @@
+# backend-php
+
+## Requisitos
+
+- PHP (recomendado 8.2+) e extensões comuns (ex: `pdo_pgsql`)
+- Composer
+- PostgreSQL
+- `psql` disponível no PATH
+
+## Instalação
+
+```bash
+composer install
+```
+
+## Configuração do projeto
+
+- Copie o arquivo de exemplo:
+
+```bash
+cp .env.example .env
+```
+
+- Preencha no `.env` (mínimo para banco):
+
+```bash
+DB_HOST=
+DB_PORT=
+DB_NAME=
+DB_USER=
+DB_PASSWORD=
+```
+
+## Criar usuário e banco no PostgreSQL (psql)
+
+Você pode criar manualmente o usuário e o banco antes de rodar o `bin/setup`.
+
+1. Entre no `psql` com um usuário admin do Postgres (ex: `postgres`):
+
+```bash
+psql -U postgres
+```
+
+2. Crie o usuário e o banco (ajuste nomes/senha conforme seu `.env`):
+
+```sql
+CREATE USER app_user WITH PASSWORD 'app_password';
+CREATE DATABASE app_db OWNER app_user;
+GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
+```
+
+3. Saia:
+
+```sql
+\q
+```
+
+## (Opcional) Deletar um banco no PostgreSQL
+
+Se você quiser remover completamente o banco (isso **apaga todos os dados**), use `DROP DATABASE`.
+
+1. Entre no `psql` com um usuário admin (ex: `postgres`):
+
+```bash
+psql -U postgres
+```
+
+2. Se não houver conexões ativas no banco:
+
+```sql
+DROP DATABASE app_db;
+```
+
+3. Se o Postgres recusar por haver conexões ativas:
+
+- Postgres 13+ (recomendado):
+
+```sql
+DROP DATABASE app_db WITH (FORCE);
+```
+
+- Alternativa (encerrar conexões e depois dropar):
+
+```sql
+SELECT pg_terminate_backend(pid)
+FROM pg_stat_activity
+WHERE datname = 'app_db'
+  AND pid <> pg_backend_pid();
+
+DROP DATABASE app_db;
+```
+
+Observação: se preferir, o `bin/setup` também consegue criar o banco quando ele não existe, desde que o usuário usado tenha permissão de `CREATE DATABASE` (por padrão ele usa `DB_USER` como “superuser”, a não ser que você defina `DB_SUPERUSER`, `DB_SUPERUSER_PASSWORD` e `DB_SUPERUSER_DB`).
+
+## Rodar migrations e seed (`bin/setup`)
+
+O script `bin/setup`:
+
+- Verifica se o banco existe; se existir, **não recria** (não faz `DROP DATABASE`).
+- Cria (se necessário) a tabela `migrations_run`.
+- Aplica as migrations `.sql` em `migrations/`.
+  - `migrations_v1.sql` é executada primeiro (se existir).
+  - As demais são executadas em ordem alfabética do nome do arquivo.
+- Executa seeds (company/role/status/chain/commodities/wallet e usuário padrão).
+
+Execute:
+
+```bash
+chmod +x bin/setup
+./bin/setup
+```
+
+## Subir a aplicação
+
+Existem **dois entrypoints**:
+
+- `public/index.php` (API)
+- `public/index_webhook.php` (webhooks)
+
+Você deve rodar **cada um em uma porta diferente**.
+
+Exemplo (2 terminais):
+
+Terminal 1 (API):
+
+```bash
+PORT=8000 php public/index.php
+```
+
+Terminal 2 (Webhooks):
+
+```bash
+PORT=8001 php public/index_webhook.php
+```
+
+Observação: o `FrameworkX` usa a variável de ambiente `PORT` para definir a porta do servidor.
+
+## B3 (mTLS)
+
+Para rodar endpoints/funcionalidades relacionadas à B3, é necessário ter estes arquivos na **raiz do projeto**:
+
+- `319245319-320109623_PROD.cer`
+- `319245319-320109623_PROD.key`

+ 0 - 47
TODO.md

@@ -1,47 +0,0 @@
-# TODO LIST
-
-### - Criar uma instancia global do banco de dados na index.php ```Feito```
----
-### - UserGetController ```Feito```
----
-### - UserDeleteController ```Feito```
----
-### - RegisterController ```Feito```
----
-### - LoginController ```Feito```
----
-### - UserModel ```Feito```
----
-### - JwtAuthMiddleware ```Feito```
----
-### - Migration and setup ```Feito```
----
-### - CompanyWithUserController (Já está criando a company, user e wallet da company juntos e salvando address, privatekey, publickey direto na tabela da wallet) ```Feito```
----
-### - CompanyModel ```Feito```
----
-### - Add Respect Validation to all controllers
----
-### - POST CHANGE EMAIL ```Feito```
-### - POST CHANGE PASSWORD ```Feito```
----
-### - POST CPR CREATE
-### - POST CPR DELETE
-### - POST CPR UPDATE
-### - GET CPR
----
-### - POST COMMODITY CREATE ```Feito```
-### - POST COMMODITY DELETE ```Feito```
-### - POST COMMODITY UPDATE ```Feito```
-### - GET COMMODITYS ```Feito```
----
-### - POST NEW ORDER BUY
-### - POST NEW ORDER SELL
-### - POST DELETE ORDER BUY
-### - POST DELETE ORDER SELL
-### - GET ORDER BUY
-### - GET ORDER SELL
-### - GET with grafico
----
-### - GET WALLET
-