20 lines
1.4 KiB
Plaintext
20 lines
1.4 KiB
Plaintext
---
|
|
description:
|
|
globs: web/src/actions,web/src/pages
|
|
alwaysApply: false
|
|
---
|
|
- In the astro actions return, generaly don't return anythig unless the caller doesn't needs it. Specially don't `return { success: true }`, or similar. If needed, just return an object with the newly created/edited objects (Like: `return { newService: service }` or don't return anything if not needed).
|
|
- When importing actions, use `import { actions } from 'astro:actions'`. Example:
|
|
|
|
```ts
|
|
import { actions } from 'astro:actions'; /* CORRECT */
|
|
import { server } from '~/actions'; /* WRONG!!!! DON'T DO THIS */
|
|
import { adminAttributeActions } from '~/actions/admin/attribute.ts'; /* WRONG!!!! DON'T DO THIS */
|
|
|
|
const result = Astro.getActionResult(actions.admin.attribute.create);
|
|
```
|
|
- When adding actions, don't create and export a new variable called actions. Notice that Astro already provides that variable from `import { actions } from 'astro:actions'`. So just add the new actions to the `server` variable in `web/src/actions/index.ts` and that's it.
|
|
- When throwing errors in Astro actions use ActionError.
|
|
- Always use Astro actions instead of with API routes and instead of `if (Astro.request.method === "POST")`.
|
|
- Generally call the actions using html forms. But if you need to, you can call them from the server-side code with Astro.callAction(), or [callActionWithUrlParams.ts](mdc:web/src/lib/callActionWithUrlParams.ts).
|
|
- The admin actions go into a separate folder. |