Skip to content
This page View Markdown Open in ChatGPT Open in Claude

Reset database cache

Drops the cached answers of the generated and schema APIs of a table, of every table of a database, or of every database of an instance. Writes through API Maker do it on their own ; this API is for data changed outside API Maker, or a cache you want gone now.

Method POST
URL /api/system-api/admin/reset-redis-cache-db : admin is the user path of your account
Body { instance, database?, collection? } or an array of them
Answer data : the number of cache entries removed, or an array of numbers
From code g.sys.cache.resetCacheDB

The call

Body : one table
{ "instance": "mysql8", "database": "inventory", "collection": "customers" }
Body : every table of a database
{ "instance": "mysql8", "database": "inventory" }
Body : several at once
[
    { "instance": "mysql8", "database": "inventory", "collection": "customers" },
    { "instance": "mongodb", "database": "shop", "collection": "orders" }
]
Answer
{ "success": true, "statusCode": 200, "data": 1 }
  • table works in place of collection.
  • An array body answers an array of counts in the same order ; an unknown instance gives -1 there and a 404 in errors.

One tenant

{ "instance": "crm::acme", "database": "crm", "collection": "customers" }
  • Names the tenant after the instance : only the cached answers of acme go. Without a tenant, the cache of the table is reset for the structure database and every tenant. See Multi-tenant.

From code

await g.sys.cache.resetCacheDB({ instance: 'mysql8', database: 'inventory', collection: 'customers' });
await g.sys.cache.reset_cache_db('mysql8', 'inventory', 'customers')
$g->sys->cache->resetCacheDB('mysql8', 'inventory', 'customers');
await g.Sys.Cache.ResetCacheDB(new ResetCacheDB("mysql8", "inventory", "customers"));
if _, err := g.Sys.Cache.ResetCacheDB(am.ResetCacheDB{Instance: "mysql8", Database: "inventory", Collection: "customers"}); err != nil {
    return nil, err
}
g.sys.cache.reset_cache_db(ResetCacheDB::new("mysql8", "inventory", "customers"))?;
g.sys.cache.resetCacheDB(new ResetCacheDB("mysql8", "inventory", "customers"));
g.sys.cache.resetCacheDB(ResetCacheDB("mysql8", "inventory", "customers"))

A tenant, or every tenant

  • Name the tenant after the instance to reset the cache of that tenant of a multi-tenant instance only. Without a tenant, the cache of the table is reset for its structure database and every tenant.
await g.sys.cache.resetCacheDB({ instance: "crm::acme", database: "crm", collection: "customers" }); // the tenant acme
await g.sys.cache.resetCacheDB({ instance: "crm", database: "crm", collection: "customers" });       // the structure database and every tenant
await g.sys.cache.reset_cache_db('crm::acme', 'crm', 'customers')  # the tenant acme
await g.sys.cache.reset_cache_db('crm', 'crm', 'customers')  # the structure database and every tenant
$g->sys->cache->resetCacheDB('crm::acme', 'crm', 'customers'); // the tenant acme
$g->sys->cache->resetCacheDB('crm', 'crm', 'customers'); // the structure database and every tenant
await g.Sys.Cache.ResetCacheDB(new ResetCacheDB("crm::acme", "crm", "customers")); // the tenant acme
await g.Sys.Cache.ResetCacheDB(new ResetCacheDB("crm", "crm", "customers")); // the structure database and every tenant
1
2
3
4
5
6
if _, err := g.Sys.Cache.ResetCacheDB(am.ResetCacheDB{Instance: "crm::acme", Database: "crm", Collection: "customers"}); err != nil { // the tenant acme
    return nil, err
}
if _, err := g.Sys.Cache.ResetCacheDB(am.ResetCacheDB{Instance: "crm", Database: "crm", Collection: "customers"}); err != nil { // the structure database and every tenant
    return nil, err
}
g.sys.cache.reset_cache_db(ResetCacheDB::new("crm::acme", "crm", "customers"))?; // the tenant acme
g.sys.cache.reset_cache_db(ResetCacheDB::new("crm", "crm", "customers"))?; // the structure database and every tenant
g.sys.cache.resetCacheDB(new ResetCacheDB("crm::acme", "crm", "customers")); // the tenant acme
g.sys.cache.resetCacheDB(new ResetCacheDB("crm", "crm", "customers")); // the structure database and every tenant
g.sys.cache.resetCacheDB(ResetCacheDB("crm::acme", "crm", "customers")) // the tenant acme
g.sys.cache.resetCacheDB(ResetCacheDB("crm", "crm", "customers")) // the structure database and every tenant

Access and settings

  • Over HTTP, a system API answers once its settings give it apiAccessType: TOKEN_ACCESS (the token of an API user whose group grants this system API, in x-am-authorization) or IS_PUBLIC. Without settings it is NO_ACCESS : your code calls it through g.sys, the admin panel tests it, and an HTTP call is refused.
  • The settings can also cache the answer or require person tokens (authProviders) ; pre and post hooks run around it like around any API.
  • The request headers apply : x-am-response-case, x-am-content-type-response, x-am-internationalization, x-am-tenant-username…

Errors

Code When
400 The body is wrong : the message names the missing or invalid key.
401 No valid API user token, or the API is NO_ACCESS : You are not authorized to access this API.
403 No group grants this system API.