# @velastack/pocketbase

Vinculaciones de PocketBase para SvelteKit: un middleware para `hooks.server.ts`, un cliente tipado y esquemas de colección con tipos seguros. Este es el paquete que importa el código generado.

```
npm install @velastack/pocketbase
```

Lo instalan por ti [`vela create`](/es/create) y [`vela enable backend`](/es/enable/backend).

### Puntos de entrada

- `@velastack/pocketbase` - El middleware y el cliente
- `@velastack/pocketbase/form` - Helpers de Superforms
- `@velastack/pocketbase/api-key` - Generación y verificación de claves de API
- `@velastack/pocketbase/testing` - El tipo `TestContext` para las pruebas de servidor

#### handlePocketbase

Configura el middleware de PocketBase en `hooks.server.ts`.

```ts
import { handlePocketbase } from '@velastack/pocketbase';
import {
    POCKETBASE_URL,
    POCKETBASE_SUPERUSER_EMAIL,
    POCKETBASE_SUPERUSER_PASSWORD
} from '$env/static/private';

export const handle = handlePocketbase({
	pocketbaseUrl: POCKETBASE_URL,
	superuserEmail: POCKETBASE_SUPERUSER_EMAIL,
	superuserPassword: POCKETBASE_SUPERUSER_PASSWORD
})
```

Los bloques `auth`, `api` y `apiKeys` los añaden a esta llamada los comandos [enable](/es/enable). Coloca dos clientes en `locals`: `admin`, que consulta la base de datos directamente, y `pb`, que está limitado al usuario autenticado.

#### setDefaultData

Establece los datos por defecto de un formulario a partir de un registro de PocketBase. Se exporta desde el punto de entrada `/form`.

```ts
import { setDefaultData } from '@velastack/pocketbase/form';

export const actions = {
	default: async ({ locals, request }) => {
        const record = await locals.admin.collection('posts').getOne(1);
        setDefaultData(form, record);
        return { form };
    }
}
```

#### setPocketbaseErrors

Establece los errores de PocketBase como errores de Superforms cuando falla el envío de un formulario.

```ts
import { setPocketbaseErrors } from '@velastack/pocketbase/form';

export const actions = {
	default: async ({ locals, request }) => {
        try {
            await locals.admin.collection('posts').create(form.data);
        } catch (error) {
            setPocketbaseErrors(form, error);
            return fail(400, { form });
        }
    }
}
```

#### Claves de API

Las primitivas detrás de [`vela enable api-keys`](/es/enable/api-keys). Las claves se guardan con hash, así que el secreto solo se muestra una vez, al generarlo.

```ts
import {
    generateApiKeySecret,
    hashApiKey,
    verifyApiKey
} from '@velastack/pocketbase/api-key';
```

#### Tipos generados

[`vela sync`](/es/sync) amplía este paquete con `Models`, `Collections` y `Schemas` para las colecciones de tu proyecto, de modo que `locals.pb.collection('posts')` queda tipado.