Uma API de estoque para testar projetos front-end.
- Rodando localmente
- Banco de dados
- End-points
- Tipos de retorno
Clone o projeto
git clone s://matusal3m/stock-apiou
gh repo clone Matusal3m/stock-apiEntre no diretório do projeto
cd stock-apiInstale as dependências
bun iCrie e configure o arquivo .env assim como mostra o .env.example
Inicialize o banco de dados
bun run migrate
bun run db:seedRode o projeto
bun startO banco de dados utilizado é o SQLite. São criados, com o método seed:
- 1000 produtos;
- 50 categorias;
- 5 estoques;
todos registrados no usuário padrão, com os seguintes dados:
{
id: 1,
name: "admin",
password: "admin",
email: "admin@teste.com",
}
| Campo | Tipo | Descrição |
|---|---|---|
| id | INTEGER | Chave primária, auto-incrementada. |
| name | TEXT | Nome do usuário (máximo de 20 caracteres). |
| TEXT | Email do usuário (máximo de 60 caracteres), único. | |
| password | TEXT | Senha do usuário. |
| Campo | Tipo | Descrição |
|---|---|---|
| id | INTEGER | Chave primária, auto-incrementada. |
| name | TEXT | Nome do estoque (máximo de 20 caracteres). |
| userId | INTEGER | Referência para a tabela users, representa o usuário proprietário do estoque. |
| Campo | Tipo | Descrição |
|---|---|---|
| id | INTEGER | Chave primária, auto-incrementada. |
| name | TEXT | Nome da categoria (máximo de 20 caracteres). |
| stockId | INTEGER | Referência para a tabela stocks, representa o estoque ao qual a categoria pertence. |
| userId | INTEGER | Referência para a tabela users, representa o usuário proprietário da categoria. |
| Campo | Tipo | Descrição |
|---|---|---|
| id | INTEGER | Chave primária, auto-incrementada. |
| name | TEXT | Nome do produto (máximo de 20 caracteres). |
| description | TEXT | Descrição do produto (máximo de 60 caracteres). |
| quantity | INTEGER | Quantidade disponível do produto. |
| categoryId | INTEGER | Referência para a tabela categories, indica a categoria do produto. |
| stockId | INTEGER | Referência para a tabela stocks, indica o estoque onde o produto está. |
| userId | INTEGER | Referência para a tabela users, indica o usuário proprietário do produto. |
ATENÇÃO: Em todos os end-points abaixo, exceto /search e /auth, é necessário enviar o JWT no header como authorization
GET /products
GET /products/${id}
GET /products/category/${id}
GET /products/stock/${id}
POST /products
body: {
name: string;
description?: string,
quantity?: number,
stockId: number,
categoryId: number
}
PUT /products
body: {
id: number,
name?: string;
description?: string,
quantity?: number,
stockId?: number,
categoryId?: number
}
GET /categories
GET /categories/${id}
GET /categories/stock/${id}
POST /categories
body: {
name: string,
stockId: number,
}
PUT /categories
body: {
id: number,
name?: string,
stockId?: number,
}
GET /stocks
GET /stocks/${id}
POST /stocks
body: {
name: string,
}
PUT /stocks
body: {
id: number,
name?: string,
}
POST /auth/login
body: {
email: string,
password: string,
}
Retorna JWT
POST /auth/register
body: {
name: string,
email: string,
password: string,
}
Retorna JWT
POST /search
body: {
query: string,
}
Retorna categorias e produtos que possuem nome que coincide com a pesquisa
- Ao chamar
GET /products
{
id: number;
name: string;
quantity: number;
description: string | null;
category: string;
stock: string;
}[]
- Qualquer outro retorno unitário
{
id: number;
name: string;
description: string | null;
quantity: number;
categoryId: number;
userId: number;
stockId: number;
}
- Ao chamar
GET /categories
{
id: number;
name: string;
stockId: number;
stock: string;
productsCount: number;
}[]
- Qualquer outro retorno unitário
{
id: number;
name: string;
userId: number;
stockId: number;
}
- Ao chamar
GET /stocks
{
id: number;
name: string;
productsCount: number;
categoriesCount: number;
}[]
- Qualquer outro retorno unitário
{
id: number;
name: string;
userId: number;
}