mirror of
https://github.com/n8n-io/n8n.git
synced 2026-10-19 16:55:02 +02:00
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>
3.4 KiB
Generated
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