42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
|
# How to add a new model or endpoint
|
||
|
|
||
|
Basically there's three places of the codebase you need to think about for each feature.
|
||
|
|
||
|
/pages/api/
|
||
|
|
||
|
- This is the most important one, and where your endpoint will live. You will leverage nextjs dynamic routes and expose one file for each endpoint you want to support ideally.
|
||
|
|
||
|
## How the codebase is organized.
|
||
|
|
||
|
## The example resource -model- and it's endpoints
|
||
|
|
||
|
### `pages/api/endpoint/`
|
||
|
|
||
|
GET pages/api/endpoint/index.ts - Read All of your resource
|
||
|
POST pages/api/endpoint/new.ts - Create new resource
|
||
|
|
||
|
### `pages/api/endpoint/[id]/`
|
||
|
|
||
|
GET pages/api/endpoint/[id]/index.ts - Read All of your resource
|
||
|
PATCH pages/api/endpoint/[id]/edit.ts - Create new resource
|
||
|
DELETE pages/api/endpoint/[id]/delete.ts - Create new resource
|
||
|
|
||
|
## `/tests/`
|
||
|
|
||
|
This is where all your endpoint's tests live, we mock prisma calls. We aim for at least 50% global coverage. Test each of your endpoints.
|
||
|
|
||
|
### `/tests/endpoint/`
|
||
|
|
||
|
/tests/endpoint/resource.index.test.ts - Test for your pages/api/endpoint/index.ts file
|
||
|
tests/endpoint/resource.new.test.ts - Create new resource
|
||
|
|
||
|
### `/tests/endpoint/[id]/`
|
||
|
|
||
|
`/tests/endpoint/[id]/resource.index.test.ts` - Read All of your resource
|
||
|
`/tests/endpoint/[id]/resource.edit.test.ts` - Create new resource
|
||
|
`/tests/endpoint/[id]/resource.delete.test.ts` - Create new resource
|
||
|
|
||
|
## `/lib/validations/yourEndpoint.ts`
|
||
|
|
||
|
- This is where our model validations, live, we try to make a 1:1 for db models, and also extract out any re-usable code into the /lib/validations/shared/ sub-folder.
|