{ "module": "model-usage", "version": "1", "slug": "usage", "capabilities": [ "container-runtime" ], "requires": [ "postgres-database" ], "contributes": { "postgres-database": { "name": "model_usage" } }, "binds": { "postgres-database": "${dir:state}/database.json" }, "secrets": { "postgres-database": "${dir:state}/database.secret" }, "consumes": [ "*.usage.*" ], "data": { "own": [ { "id": "state", "path": "${dir:state}", "class": "cache", "why": "the mesh's own files for it; its records are in its database" }, { "id": "spool", "path": "${dir:spool}", "class": "valuable", "why": "usage events the store could not take yet; after the bus gives one up, the only copy" } ] }, "resources": [ { "id": "state", "type": "directory", "mode": "0700", "place": "." }, { "id": "database-url", "type": "file", "path": "${dir:state}/database.url", "mode": "0600", "content": "postgresql://${bound:postgres-database:as}:${secret:postgres-database}@${bound:postgres-database:at}:${bound:postgres-database:port}/${bound:postgres-database:as}\n" }, { "id": "spool", "type": "directory", "mode": "0700" }, { "id": "prepare", "type": "process", "name": "model-usage-prepare", "artifact": "code", "run": [ "node", "prepare/index.js" ], "run-once": true, "env": { "DATABASE_URL_FILE": "${dir:state}/database.url" }, "restart-on": [ "database-url" ] } ], "build": { "artifacts": [ { "name": "code", "kind": "bundle", "language": "typescript", "entrypoints": [ "index.js", "tools/index.js", "prepare/index.js" ], "loads": [ "index.js", "tools/index.js" ], "env": { "DATABASE_URL_FILE": "${dir:state}/database.url", "USAGE_SPOOL": "${dir:spool}" } } ] } }