diff --git a/docs/hooks-and-api.md b/docs/hooks-and-api.md index 09ea71d..3e94aec 100644 --- a/docs/hooks-and-api.md +++ b/docs/hooks-and-api.md @@ -115,6 +115,8 @@ API server-side para operaciones de base de datos. Disponible en todos los hooks ### Read — `CmsApi::get()` +## IMPORTANTE : Las tablas y nombres de campos puedes extraerlas de los esquemas en cms/data/schemas/.ini.php + ```php // Todos los registros $products = CmsApi::get("productos"); @@ -139,6 +141,21 @@ $expensive = CmsApi::get("productos", "precio >= 100"); $search = CmsApi::get("productos", "nombre LIKE '%keyword%'"); $inList = CmsApi::get("productos", "categoria_num IN (1, 2, 3)"); +#### Opciones de `get()` + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `uploads` | bool | `true` | Incluir datos de upload fields | +| `relations` | bool/array | `true` | Resolver foreign keys. Array para limitar: `['category']` | +| `relationsDepth` | int | 2 | Profundidad de relaciones anidadas | +| `translates` | string | current lang | Código de idioma | +| `groupBy` | string | null | GROUP BY clause | +| `aggregates` | array | `[]` | Funciones de agregación | +| `onlyFields` | array | null | Seleccionar solo campos específicos | +| `debug` | bool | false | Mostrar SQL query | +| `redis` | bool | null | Forzar cache Redis | +| `redis_expire` | int | 60 | TTL de cache Redis (segundos) | + // Con opciones $datos = CmsApi::get("productos", "", "", "", [ 'translates' => true, @@ -150,6 +167,8 @@ $datos = CmsApi::get("productos", "", "", "", [ ### Insert — `CmsApi::insert()` +## IMPORTANTE : Las tablas y nombres de campos puedes extraerlas de los esquemas en cms/data/schemas/.ini.php + ```php // Un registro CmsApi::insert('contacto', [ @@ -170,8 +189,19 @@ CmsApi::insert('productos', ); ``` +#### Opciones de insert + +| Option | Description | +|--------|-------------| +| `forceNum` | Permite setear el campo `num` manualmente | +| `ignoreSchema` | Saltar validación de schema | +| `ignoreFields` | Array de campos a ignorar | + + ### Update — `CmsApi::update()` +## IMPORTANTE : Las tablas y nombres de campos puedes extraerlas de los esquemas en cms/data/schemas/.ini.php + ```php // Con condición string CmsApi::update('productos', ["precio" => 150], "num=1"); @@ -186,8 +216,19 @@ CmsApi::update('productos', CmsApi::update('productos', ["activo" => 0], "precio < 50"); ``` +#### Opciones de update + +| Option | Description | +|--------|-------------| +| `forceNum` | Permite setear el campo `num` manualmente | +| `ignoreSchema` | Saltar validación de schema | +| `ignoreFields` | Array de campos a ignorar | + + ### Delete — `CmsApi::delete()` +## IMPORTANTE : Las tablas y nombres de campos puedes extraerlas de los esquemas en cms/data/schemas/.ini.php + ```php CmsApi::delete('productos', "num=5"); @@ -232,104 +273,18 @@ Para búsquedas y lecturas habituales, prioriza: 3. SQL manual solo si de verdad no hay alternativa razonable ### `CocoDB::get($table, $where, $order, $limit, $options)` -### Funcionalidad exactamente igual a CmsApi::get ( ver referencia CmsApi::get ) +## Funcionalidad exactamente igual a CmsApi::get ( ver referencia CmsApi::get ) -#### Opciones de `get()` - -| Option | Type | Default | Description | -|--------|------|---------|-------------| -| `uploads` | bool | `true` | Incluir datos de upload fields | -| `relations` | bool/array | `true` | Resolver foreign keys. Array para limitar: `['category']` | -| `relationsDepth` | int | 2 | Profundidad de relaciones anidadas | -| `translates` | string | current lang | Código de idioma | -| `groupBy` | string | null | GROUP BY clause | -| `aggregates` | array | `[]` | Funciones de agregación | -| `onlyFields` | array | null | Seleccionar solo campos específicos | -| `debug` | bool | false | Mostrar SQL query | -| `redis` | bool | null | Forzar cache Redis | -| `redis_expire` | int | 60 | TTL de cache Redis (segundos) | ### `CocoDB::insertRecords($table, $records, $functions, $options)` - -```php -// Un registro -$count = CocoDB::insertRecords('contacto', [ - 'nombre' => 'John', - 'email' => 'john@example.com', -]); -// Usar mysql_insert_id() para obtener el nuevo num - -// Múltiples -$count = CocoDB::insertRecords('productos', [ - ['nombre' => 'Product A', 'precio' => 10], - ['nombre' => 'Product B', 'precio' => 20], -]); -``` - -#### Opciones de insert/update - -| Option | Description | -|--------|-------------| -| `forceNum` | Permite setear el campo `num` manualmente | -| `ignoreSchema` | Saltar validación de schema | -| `ignoreFields` | Array de campos a ignorar | +## Funcionalidad exactamente igual a CmsApi::insert ( ver referencia CmsApi::insert ) ### `CocoDB::updateRecords($table, $records, $where, $functions, $options)` +## Funcionalidad exactamente igual a CmsApi::update ( ver referencia CmsApi::update ) -```php -CocoDB::updateRecords('productos', - ['precio' => 29.99, 'activo' => 1], - ['num' => 42] -); - -// Con operador en where -CocoDB::updateRecords('productos', - ['activo' => 0], - [['column' => 'stock', 'value' => 0, 'operator' => '<=']] -); -``` ### `CocoDB::deleteRecords($table, $where, $options)` - -```php -CocoDB::deleteRecords('productos', ['num' => 42]); - -CocoDB::deleteRecords('logs', [ - ['column' => 'fecha', 'value' => '2024-01-01', 'operator' => '<'] -]); -``` - -### Parámetro `$functions` - -Permite aplicar funciones MySQL a valores durante insert/update: - -```php -CocoDB::insertRecords('logs', [ - 'mensaje' => 'Login exitoso', - 'fecha' => '', -], [ - 'fecha' => 'NOW()', -]); -``` - -### Where Clause — Formatos - -**Simple (key-value):** -```php -['campo' => 'valor'] // campo = 'valor' -``` - -**Avanzado (array de condiciones):** -```php -[ - 'column' => 'field_name', - 'value' => 'match_value', - 'operator' => '=', // =, !=, <, >, <=, >=, LIKE, IN, IS NULL - 'or' => false, // OR en vez de AND - 'not' => false, // Negar la condición - 'raw_key' => false, // Saltar check de existencia de columna -] -``` +## Funcionalidad exactamente igual a CmsApi::delete ( ver referencia CmsApi::delete ) ---