n8n/docs/generated/sqlite-schema/execution_quota.md
Guillaume Jacquart 2ad6721e94
feat(core): Add execution ledger for quotas and usage counting (no-changelog)
Add an append-only execution ledger with one fold task every 5 seconds.
Participants fold claimed rows in one transaction: workflow statistics,
execution quota usage, and Insights hourly buckets.

Add hard execution quotas per workflow and project. An atomic Redis or
memory counter admits a run, and the started row commits with the
execution row. Postgres and SQLite are both supported.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 00:46:13 +02:00

3.4 KiB
Generated

execution_quota

Description

Table Definition
CREATE TABLE "execution_quota" (
				"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
				"workflowId" varchar(36) REFERENCES "workflow_entity" ("id") ON DELETE CASCADE,
				"projectId" varchar(36) REFERENCES "project" ("id") ON DELETE CASCADE,
				"period" varchar(8) NOT NULL CHECK ("period" IN ('day', 'month')),
				"limit" integer NOT NULL CHECK ("limit" >= 0),
				"createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
				"updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
				CHECK (("workflowId" IS NULL) <> ("projectId" IS NULL))
			)

Columns

Name Type Default Nullable Children Parents Comment
createdAt datetime(3) STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') false
id INTEGER false
limit INTEGER false
period varchar(8) false
projectId varchar(36) true project
updatedAt datetime(3) STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') false
workflowId varchar(36) true workflow_entity

Constraints

Name Type Definition
- CHECK CHECK ("period" IN ('day', 'month'))
- CHECK CHECK ("limit" >= 0)
- CHECK CHECK (("workflowId" IS NULL) <> ("projectId" IS NULL))
- (Foreign key ID: 0) FOREIGN KEY FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE
- (Foreign key ID: 1) FOREIGN KEY FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE
id PRIMARY KEY PRIMARY KEY (id)

Indexes

Name Definition
IDX_execution_quota_project CREATE UNIQUE INDEX "IDX_execution_quota_project"
ON "execution_quota" ("projectId") WHERE "projectId" IS NOT NULL
IDX_execution_quota_workflow CREATE UNIQUE INDEX "IDX_execution_quota_workflow"
ON "execution_quota" ("workflowId") WHERE "workflowId" IS NOT NULL

Relations

erDiagram

"execution_quota" }o--o| "project" : "FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"execution_quota" }o--o| "workflow_entity" : "FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"

"execution_quota" {
  datetime_3_ createdAt
  INTEGER id
  INTEGER limit
  varchar_8_ period
  varchar_36_ projectId FK
  datetime_3_ updatedAt
  varchar_36_ workflowId FK
}
"project" {
  datetime_3_ createdAt
  varchar creatorId FK
  TEXT customTelemetryTags
  varchar_512_ description
  TEXT icon
  varchar_36_ id PK
  varchar_255_ name
  varchar_36_ type
  datetime_3_ updatedAt
}
"workflow_entity" {
  boolean active
  varchar_36_ activeVersionId FK
  TEXT connections
  datetime_3_ createdAt
  TEXT description
  varchar_36_ id PK
  boolean isArchived
  TEXT meta
  varchar_128_ name
  TEXT nodeGroups
  TEXT nodes
  varchar_36_ parentFolderId FK
  TEXT pinData
  TEXT settings
  varchar sourceWorkflowId
  TEXT staticData
  INTEGER triggerCount
  datetime_3_ updatedAt
  INTEGER versionCounter
  varchar_36_ versionId
}

Generated by tbls