add: add unit (per second) to lemonsqueezy after run, and sync to db table
This commit is contained in:
		
							parent
							
								
									0ba1a6d1f0
								
							
						
					
					
						commit
						f948fca78c
					
				
							
								
								
									
										
											BIN
										
									
								
								web/bun.lockb
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								web/bun.lockb
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										13
									
								
								web/drizzle/0033_fantastic_marvel_boy.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								web/drizzle/0033_fantastic_marvel_boy.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					CREATE TABLE IF NOT EXISTS "comfyui_deploy"."user_usage" (
 | 
				
			||||||
 | 
						"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
 | 
				
			||||||
 | 
						"user_id" text NOT NULL,
 | 
				
			||||||
 | 
						"usage_time" real DEFAULT 0 NOT NULL,
 | 
				
			||||||
 | 
						"created_at" timestamp DEFAULT now() NOT NULL,
 | 
				
			||||||
 | 
						"updated_at" timestamp DEFAULT now() NOT NULL
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					--> statement-breakpoint
 | 
				
			||||||
 | 
					DO $$ BEGIN
 | 
				
			||||||
 | 
					 ALTER TABLE "comfyui_deploy"."user_usage" ADD CONSTRAINT "user_usage_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "comfyui_deploy"."users"("id") ON DELETE cascade ON UPDATE no action;
 | 
				
			||||||
 | 
					EXCEPTION
 | 
				
			||||||
 | 
					 WHEN duplicate_object THEN null;
 | 
				
			||||||
 | 
					END $$;
 | 
				
			||||||
							
								
								
									
										2
									
								
								web/drizzle/0034_previous_viper.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								web/drizzle/0034_previous_viper.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					ALTER TABLE "comfyui_deploy"."user_usage" RENAME COLUMN "updated_at" TO "ended_at";--> statement-breakpoint
 | 
				
			||||||
 | 
					ALTER TABLE "comfyui_deploy"."user_usage" ADD COLUMN "org_id" text;
 | 
				
			||||||
							
								
								
									
										834
									
								
								web/drizzle/meta/0033_snapshot.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										834
									
								
								web/drizzle/meta/0033_snapshot.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,834 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": "91bb0461-452a-4e59-abf4-8757fcd75a89",
 | 
				
			||||||
 | 
					  "prevId": "1425ee00-66fb-4541-8da7-19b217944545",
 | 
				
			||||||
 | 
					  "version": "5",
 | 
				
			||||||
 | 
					  "dialect": "pg",
 | 
				
			||||||
 | 
					  "tables": {
 | 
				
			||||||
 | 
					    "api_keys": {
 | 
				
			||||||
 | 
					      "name": "api_keys",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "key": {
 | 
				
			||||||
 | 
					          "name": "key",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "revoked": {
 | 
				
			||||||
 | 
					          "name": "revoked",
 | 
				
			||||||
 | 
					          "type": "boolean",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "api_keys_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "api_keys_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "api_keys",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {
 | 
				
			||||||
 | 
					        "api_keys_key_unique": {
 | 
				
			||||||
 | 
					          "name": "api_keys_key_unique",
 | 
				
			||||||
 | 
					          "nullsNotDistinct": false,
 | 
				
			||||||
 | 
					          "columns": [
 | 
				
			||||||
 | 
					            "key"
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "deployments": {
 | 
				
			||||||
 | 
					      "name": "deployments",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_version_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_version_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "machine_id": {
 | 
				
			||||||
 | 
					          "name": "machine_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "share_slug": {
 | 
				
			||||||
 | 
					          "name": "share_slug",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "description": {
 | 
				
			||||||
 | 
					          "name": "description",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "showcase_media": {
 | 
				
			||||||
 | 
					          "name": "showcase_media",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "environment": {
 | 
				
			||||||
 | 
					          "name": "environment",
 | 
				
			||||||
 | 
					          "type": "deployment_environment",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "deployments_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_workflow_version_id_workflow_versions_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_workflow_version_id_workflow_versions_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_versions",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_version_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "no action",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_machine_id_machines_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_machine_id_machines_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "machines",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "machine_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "no action",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {
 | 
				
			||||||
 | 
					        "deployments_share_slug_unique": {
 | 
				
			||||||
 | 
					          "name": "deployments_share_slug_unique",
 | 
				
			||||||
 | 
					          "nullsNotDistinct": false,
 | 
				
			||||||
 | 
					          "columns": [
 | 
				
			||||||
 | 
					            "share_slug"
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machines": {
 | 
				
			||||||
 | 
					      "name": "machines",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "endpoint": {
 | 
				
			||||||
 | 
					          "name": "endpoint",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "disabled": {
 | 
				
			||||||
 | 
					          "name": "disabled",
 | 
				
			||||||
 | 
					          "type": "boolean",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "auth_token": {
 | 
				
			||||||
 | 
					          "name": "auth_token",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "type": {
 | 
				
			||||||
 | 
					          "name": "type",
 | 
				
			||||||
 | 
					          "type": "machine_type",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'classic'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "status": {
 | 
				
			||||||
 | 
					          "name": "status",
 | 
				
			||||||
 | 
					          "type": "machine_status",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'ready'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "snapshot": {
 | 
				
			||||||
 | 
					          "name": "snapshot",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "models": {
 | 
				
			||||||
 | 
					          "name": "models",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "gpu": {
 | 
				
			||||||
 | 
					          "name": "gpu",
 | 
				
			||||||
 | 
					          "type": "machine_gpu",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "build_machine_instance_id": {
 | 
				
			||||||
 | 
					          "name": "build_machine_instance_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "build_log": {
 | 
				
			||||||
 | 
					          "name": "build_log",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "machines_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "machines_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "machines",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "user_usage": {
 | 
				
			||||||
 | 
					      "name": "user_usage",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "usage_time": {
 | 
				
			||||||
 | 
					          "name": "usage_time",
 | 
				
			||||||
 | 
					          "type": "real",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": 0
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "user_usage_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "user_usage_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "user_usage",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "users": {
 | 
				
			||||||
 | 
					      "name": "users",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "username": {
 | 
				
			||||||
 | 
					          "name": "username",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {},
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_outputs": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_outputs",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "run_id": {
 | 
				
			||||||
 | 
					          "name": "run_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "data": {
 | 
				
			||||||
 | 
					          "name": "data",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_run_outputs_run_id_workflow_runs_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_run_outputs_run_id_workflow_runs_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_run_outputs",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_runs",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "run_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_runs": {
 | 
				
			||||||
 | 
					      "name": "workflow_runs",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_version_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_version_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_inputs": {
 | 
				
			||||||
 | 
					          "name": "workflow_inputs",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "machine_id": {
 | 
				
			||||||
 | 
					          "name": "machine_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "origin": {
 | 
				
			||||||
 | 
					          "name": "origin",
 | 
				
			||||||
 | 
					          "type": "workflow_run_origin",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'api'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "status": {
 | 
				
			||||||
 | 
					          "name": "status",
 | 
				
			||||||
 | 
					          "type": "workflow_run_status",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'not-started'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "ended_at": {
 | 
				
			||||||
 | 
					          "name": "ended_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "started_at": {
 | 
				
			||||||
 | 
					          "name": "started_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_runs_workflow_version_id_workflow_versions_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_workflow_version_id_workflow_versions_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_versions",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_version_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "set null",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_runs_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_runs_machine_id_machines_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_machine_id_machines_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "machines",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "machine_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "set null",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflows": {
 | 
				
			||||||
 | 
					      "name": "workflows",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflows_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflows_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflows",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_versions": {
 | 
				
			||||||
 | 
					      "name": "workflow_versions",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow": {
 | 
				
			||||||
 | 
					          "name": "workflow",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_api": {
 | 
				
			||||||
 | 
					          "name": "workflow_api",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "version": {
 | 
				
			||||||
 | 
					          "name": "version",
 | 
				
			||||||
 | 
					          "type": "integer",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "snapshot": {
 | 
				
			||||||
 | 
					          "name": "snapshot",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_versions_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_versions_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_versions",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "enums": {
 | 
				
			||||||
 | 
					    "deployment_environment": {
 | 
				
			||||||
 | 
					      "name": "deployment_environment",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "staging": "staging",
 | 
				
			||||||
 | 
					        "production": "production",
 | 
				
			||||||
 | 
					        "public-share": "public-share"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_gpu": {
 | 
				
			||||||
 | 
					      "name": "machine_gpu",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "T4": "T4",
 | 
				
			||||||
 | 
					        "A10G": "A10G",
 | 
				
			||||||
 | 
					        "A100": "A100"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_status": {
 | 
				
			||||||
 | 
					      "name": "machine_status",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "ready": "ready",
 | 
				
			||||||
 | 
					        "building": "building",
 | 
				
			||||||
 | 
					        "error": "error"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_type": {
 | 
				
			||||||
 | 
					      "name": "machine_type",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "classic": "classic",
 | 
				
			||||||
 | 
					        "runpod-serverless": "runpod-serverless",
 | 
				
			||||||
 | 
					        "modal-serverless": "modal-serverless",
 | 
				
			||||||
 | 
					        "comfy-deploy-serverless": "comfy-deploy-serverless"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_origin": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_origin",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "manual": "manual",
 | 
				
			||||||
 | 
					        "api": "api",
 | 
				
			||||||
 | 
					        "public-share": "public-share"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_status": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_status",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "not-started": "not-started",
 | 
				
			||||||
 | 
					        "running": "running",
 | 
				
			||||||
 | 
					        "uploading": "uploading",
 | 
				
			||||||
 | 
					        "success": "success",
 | 
				
			||||||
 | 
					        "failed": "failed"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "schemas": {
 | 
				
			||||||
 | 
					    "comfyui_deploy": "comfyui_deploy"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "_meta": {
 | 
				
			||||||
 | 
					    "schemas": {},
 | 
				
			||||||
 | 
					    "tables": {},
 | 
				
			||||||
 | 
					    "columns": {}
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										842
									
								
								web/drizzle/meta/0034_snapshot.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										842
									
								
								web/drizzle/meta/0034_snapshot.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,842 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": "fad17dc9-86c5-4081-8e73-47c113f48936",
 | 
				
			||||||
 | 
					  "prevId": "91bb0461-452a-4e59-abf4-8757fcd75a89",
 | 
				
			||||||
 | 
					  "version": "5",
 | 
				
			||||||
 | 
					  "dialect": "pg",
 | 
				
			||||||
 | 
					  "tables": {
 | 
				
			||||||
 | 
					    "api_keys": {
 | 
				
			||||||
 | 
					      "name": "api_keys",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "key": {
 | 
				
			||||||
 | 
					          "name": "key",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "revoked": {
 | 
				
			||||||
 | 
					          "name": "revoked",
 | 
				
			||||||
 | 
					          "type": "boolean",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "api_keys_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "api_keys_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "api_keys",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {
 | 
				
			||||||
 | 
					        "api_keys_key_unique": {
 | 
				
			||||||
 | 
					          "name": "api_keys_key_unique",
 | 
				
			||||||
 | 
					          "nullsNotDistinct": false,
 | 
				
			||||||
 | 
					          "columns": [
 | 
				
			||||||
 | 
					            "key"
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "deployments": {
 | 
				
			||||||
 | 
					      "name": "deployments",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_version_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_version_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "machine_id": {
 | 
				
			||||||
 | 
					          "name": "machine_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "share_slug": {
 | 
				
			||||||
 | 
					          "name": "share_slug",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "description": {
 | 
				
			||||||
 | 
					          "name": "description",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "showcase_media": {
 | 
				
			||||||
 | 
					          "name": "showcase_media",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "environment": {
 | 
				
			||||||
 | 
					          "name": "environment",
 | 
				
			||||||
 | 
					          "type": "deployment_environment",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "deployments_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_workflow_version_id_workflow_versions_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_workflow_version_id_workflow_versions_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_versions",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_version_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "no action",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "deployments_machine_id_machines_id_fk": {
 | 
				
			||||||
 | 
					          "name": "deployments_machine_id_machines_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "deployments",
 | 
				
			||||||
 | 
					          "tableTo": "machines",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "machine_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "no action",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {
 | 
				
			||||||
 | 
					        "deployments_share_slug_unique": {
 | 
				
			||||||
 | 
					          "name": "deployments_share_slug_unique",
 | 
				
			||||||
 | 
					          "nullsNotDistinct": false,
 | 
				
			||||||
 | 
					          "columns": [
 | 
				
			||||||
 | 
					            "share_slug"
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machines": {
 | 
				
			||||||
 | 
					      "name": "machines",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "endpoint": {
 | 
				
			||||||
 | 
					          "name": "endpoint",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "disabled": {
 | 
				
			||||||
 | 
					          "name": "disabled",
 | 
				
			||||||
 | 
					          "type": "boolean",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "auth_token": {
 | 
				
			||||||
 | 
					          "name": "auth_token",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "type": {
 | 
				
			||||||
 | 
					          "name": "type",
 | 
				
			||||||
 | 
					          "type": "machine_type",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'classic'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "status": {
 | 
				
			||||||
 | 
					          "name": "status",
 | 
				
			||||||
 | 
					          "type": "machine_status",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'ready'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "snapshot": {
 | 
				
			||||||
 | 
					          "name": "snapshot",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "models": {
 | 
				
			||||||
 | 
					          "name": "models",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "gpu": {
 | 
				
			||||||
 | 
					          "name": "gpu",
 | 
				
			||||||
 | 
					          "type": "machine_gpu",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "build_machine_instance_id": {
 | 
				
			||||||
 | 
					          "name": "build_machine_instance_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "build_log": {
 | 
				
			||||||
 | 
					          "name": "build_log",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "machines_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "machines_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "machines",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "user_usage": {
 | 
				
			||||||
 | 
					      "name": "user_usage",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "usage_time": {
 | 
				
			||||||
 | 
					          "name": "usage_time",
 | 
				
			||||||
 | 
					          "type": "real",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": 0
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "ended_at": {
 | 
				
			||||||
 | 
					          "name": "ended_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "user_usage_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "user_usage_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "user_usage",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "users": {
 | 
				
			||||||
 | 
					      "name": "users",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "username": {
 | 
				
			||||||
 | 
					          "name": "username",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {},
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_outputs": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_outputs",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "run_id": {
 | 
				
			||||||
 | 
					          "name": "run_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "data": {
 | 
				
			||||||
 | 
					          "name": "data",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_run_outputs_run_id_workflow_runs_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_run_outputs_run_id_workflow_runs_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_run_outputs",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_runs",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "run_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_runs": {
 | 
				
			||||||
 | 
					      "name": "workflow_runs",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_version_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_version_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_inputs": {
 | 
				
			||||||
 | 
					          "name": "workflow_inputs",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "machine_id": {
 | 
				
			||||||
 | 
					          "name": "machine_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "origin": {
 | 
				
			||||||
 | 
					          "name": "origin",
 | 
				
			||||||
 | 
					          "type": "workflow_run_origin",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'api'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "status": {
 | 
				
			||||||
 | 
					          "name": "status",
 | 
				
			||||||
 | 
					          "type": "workflow_run_status",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "'not-started'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "ended_at": {
 | 
				
			||||||
 | 
					          "name": "ended_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "started_at": {
 | 
				
			||||||
 | 
					          "name": "started_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_runs_workflow_version_id_workflow_versions_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_workflow_version_id_workflow_versions_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "workflow_versions",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_version_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "set null",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_runs_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_runs_machine_id_machines_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_runs_machine_id_machines_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_runs",
 | 
				
			||||||
 | 
					          "tableTo": "machines",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "machine_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "set null",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflows": {
 | 
				
			||||||
 | 
					      "name": "workflows",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "user_id": {
 | 
				
			||||||
 | 
					          "name": "user_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "org_id": {
 | 
				
			||||||
 | 
					          "name": "org_id",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "name": {
 | 
				
			||||||
 | 
					          "name": "name",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflows_user_id_users_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflows_user_id_users_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflows",
 | 
				
			||||||
 | 
					          "tableTo": "users",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "user_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_versions": {
 | 
				
			||||||
 | 
					      "name": "workflow_versions",
 | 
				
			||||||
 | 
					      "schema": "comfyui_deploy",
 | 
				
			||||||
 | 
					      "columns": {
 | 
				
			||||||
 | 
					        "workflow_id": {
 | 
				
			||||||
 | 
					          "name": "workflow_id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "id": {
 | 
				
			||||||
 | 
					          "name": "id",
 | 
				
			||||||
 | 
					          "type": "uuid",
 | 
				
			||||||
 | 
					          "primaryKey": true,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "gen_random_uuid()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow": {
 | 
				
			||||||
 | 
					          "name": "workflow",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "workflow_api": {
 | 
				
			||||||
 | 
					          "name": "workflow_api",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "version": {
 | 
				
			||||||
 | 
					          "name": "version",
 | 
				
			||||||
 | 
					          "type": "integer",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "snapshot": {
 | 
				
			||||||
 | 
					          "name": "snapshot",
 | 
				
			||||||
 | 
					          "type": "jsonb",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "created_at": {
 | 
				
			||||||
 | 
					          "name": "created_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "updated_at": {
 | 
				
			||||||
 | 
					          "name": "updated_at",
 | 
				
			||||||
 | 
					          "type": "timestamp",
 | 
				
			||||||
 | 
					          "primaryKey": false,
 | 
				
			||||||
 | 
					          "notNull": true,
 | 
				
			||||||
 | 
					          "default": "now()"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "indexes": {},
 | 
				
			||||||
 | 
					      "foreignKeys": {
 | 
				
			||||||
 | 
					        "workflow_versions_workflow_id_workflows_id_fk": {
 | 
				
			||||||
 | 
					          "name": "workflow_versions_workflow_id_workflows_id_fk",
 | 
				
			||||||
 | 
					          "tableFrom": "workflow_versions",
 | 
				
			||||||
 | 
					          "tableTo": "workflows",
 | 
				
			||||||
 | 
					          "columnsFrom": [
 | 
				
			||||||
 | 
					            "workflow_id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "columnsTo": [
 | 
				
			||||||
 | 
					            "id"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "onDelete": "cascade",
 | 
				
			||||||
 | 
					          "onUpdate": "no action"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "compositePrimaryKeys": {},
 | 
				
			||||||
 | 
					      "uniqueConstraints": {}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "enums": {
 | 
				
			||||||
 | 
					    "deployment_environment": {
 | 
				
			||||||
 | 
					      "name": "deployment_environment",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "staging": "staging",
 | 
				
			||||||
 | 
					        "production": "production",
 | 
				
			||||||
 | 
					        "public-share": "public-share"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_gpu": {
 | 
				
			||||||
 | 
					      "name": "machine_gpu",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "T4": "T4",
 | 
				
			||||||
 | 
					        "A10G": "A10G",
 | 
				
			||||||
 | 
					        "A100": "A100"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_status": {
 | 
				
			||||||
 | 
					      "name": "machine_status",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "ready": "ready",
 | 
				
			||||||
 | 
					        "building": "building",
 | 
				
			||||||
 | 
					        "error": "error"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "machine_type": {
 | 
				
			||||||
 | 
					      "name": "machine_type",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "classic": "classic",
 | 
				
			||||||
 | 
					        "runpod-serverless": "runpod-serverless",
 | 
				
			||||||
 | 
					        "modal-serverless": "modal-serverless",
 | 
				
			||||||
 | 
					        "comfy-deploy-serverless": "comfy-deploy-serverless"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_origin": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_origin",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "manual": "manual",
 | 
				
			||||||
 | 
					        "api": "api",
 | 
				
			||||||
 | 
					        "public-share": "public-share"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "workflow_run_status": {
 | 
				
			||||||
 | 
					      "name": "workflow_run_status",
 | 
				
			||||||
 | 
					      "values": {
 | 
				
			||||||
 | 
					        "not-started": "not-started",
 | 
				
			||||||
 | 
					        "running": "running",
 | 
				
			||||||
 | 
					        "uploading": "uploading",
 | 
				
			||||||
 | 
					        "success": "success",
 | 
				
			||||||
 | 
					        "failed": "failed"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "schemas": {
 | 
				
			||||||
 | 
					    "comfyui_deploy": "comfyui_deploy"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "_meta": {
 | 
				
			||||||
 | 
					    "schemas": {},
 | 
				
			||||||
 | 
					    "tables": {},
 | 
				
			||||||
 | 
					    "columns": {
 | 
				
			||||||
 | 
					      "\"comfyui_deploy\".\"user_usage\".\"updated_at\"": "\"comfyui_deploy\".\"user_usage\".\"ended_at\""
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -232,6 +232,20 @@
 | 
				
			|||||||
      "when": 1705806921697,
 | 
					      "when": 1705806921697,
 | 
				
			||||||
      "tag": "0032_shallow_vermin",
 | 
					      "tag": "0032_shallow_vermin",
 | 
				
			||||||
      "breakpoints": true
 | 
					      "breakpoints": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "idx": 33,
 | 
				
			||||||
 | 
					      "version": "5",
 | 
				
			||||||
 | 
					      "when": 1705824362978,
 | 
				
			||||||
 | 
					      "tag": "0033_fantastic_marvel_boy",
 | 
				
			||||||
 | 
					      "breakpoints": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "idx": 34,
 | 
				
			||||||
 | 
					      "version": "5",
 | 
				
			||||||
 | 
					      "when": 1705840184127,
 | 
				
			||||||
 | 
					      "tag": "0034_previous_viper",
 | 
				
			||||||
 | 
					      "breakpoints": true
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,6 +1,13 @@
 | 
				
			|||||||
import { parseDataSafe } from "../../../../lib/parseDataSafe";
 | 
					import { parseDataSafe } from "../../../../lib/parseDataSafe";
 | 
				
			||||||
import { db } from "@/db/db";
 | 
					import { db } from "@/db/db";
 | 
				
			||||||
import { workflowRunOutputs, workflowRunsTable } from "@/db/schema";
 | 
					import {
 | 
				
			||||||
 | 
					  userUsageTable,
 | 
				
			||||||
 | 
					  workflowRunOutputs,
 | 
				
			||||||
 | 
					  workflowRunsTable,
 | 
				
			||||||
 | 
					  workflowTable,
 | 
				
			||||||
 | 
					} from "@/db/schema";
 | 
				
			||||||
 | 
					import { getDuration } from "@/lib/getRelativeTime";
 | 
				
			||||||
 | 
					import { getSubscription, setUsage } from "@/server/linkToPricing";
 | 
				
			||||||
import { eq } from "drizzle-orm";
 | 
					import { eq } from "drizzle-orm";
 | 
				
			||||||
import { NextResponse } from "next/server";
 | 
					import { NextResponse } from "next/server";
 | 
				
			||||||
import { z } from "zod";
 | 
					import { z } from "zod";
 | 
				
			||||||
@ -27,7 +34,6 @@ export async function POST(request: Request) {
 | 
				
			|||||||
      data: output_data,
 | 
					      data: output_data,
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  } else if (status) {
 | 
					  } else if (status) {
 | 
				
			||||||
    // console.log("status", status);
 | 
					 | 
				
			||||||
    const workflow_run = await db
 | 
					    const workflow_run = await db
 | 
				
			||||||
      .update(workflowRunsTable)
 | 
					      .update(workflowRunsTable)
 | 
				
			||||||
      .set({
 | 
					      .set({
 | 
				
			||||||
@ -35,8 +41,15 @@ export async function POST(request: Request) {
 | 
				
			|||||||
        ended_at:
 | 
					        ended_at:
 | 
				
			||||||
          status === "success" || status === "failed" ? new Date() : null,
 | 
					          status === "success" || status === "failed" ? new Date() : null,
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      .where(eq(workflowRunsTable.id, run_id))
 | 
					      .where(eq(workflowRunsTable.id, run_id));
 | 
				
			||||||
      .returning();
 | 
					
 | 
				
			||||||
 | 
					    // get data from workflowRunsTable
 | 
				
			||||||
 | 
					    const userUsageTime = await importUserUsageData(run_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (userUsageTime) {
 | 
				
			||||||
 | 
					      // get the usage_time from userUsage
 | 
				
			||||||
 | 
					      await addSubscriptionUnit(userUsageTime);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // const workflow_version = await db.query.workflowVersionTable.findFirst({
 | 
					  // const workflow_version = await db.query.workflowVersionTable.findFirst({
 | 
				
			||||||
@ -54,3 +67,47 @@ export async function POST(request: Request) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function addSubscriptionUnit(userUsageTime: number) {
 | 
				
			||||||
 | 
					  const subscription = await getSubscription();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // round up userUsageTime to the nearest integer
 | 
				
			||||||
 | 
					  const roundedUsageTime = Math.ceil(userUsageTime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (subscription) {
 | 
				
			||||||
 | 
					    const usage = await setUsage(
 | 
				
			||||||
 | 
					      subscription.data[0].attributes.first_subscription_item.id,
 | 
				
			||||||
 | 
					      roundedUsageTime
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function importUserUsageData(run_id: string) {
 | 
				
			||||||
 | 
					  const workflowRuns = await db.query.workflowRunsTable.findFirst({
 | 
				
			||||||
 | 
					    where: eq(workflowRunsTable.id, run_id),
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!workflowRuns?.workflow_id) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // find if workflowTable id column contains workflowRunsTable workflow_id
 | 
				
			||||||
 | 
					  const workflow = await db.query.workflowTable.findFirst({
 | 
				
			||||||
 | 
					    where: eq(workflowTable.id, workflowRuns.workflow_id),
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (workflowRuns?.ended_at === null || workflow == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usageTime = parseFloat(
 | 
				
			||||||
 | 
					    getDuration((workflowRuns?.ended_at - workflowRuns?.started_at) / 1000)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // add data to userUsageTable
 | 
				
			||||||
 | 
					  const user_usage = await db.insert(userUsageTable).values({
 | 
				
			||||||
 | 
					    user_id: workflow.user_id,
 | 
				
			||||||
 | 
					    created_at: workflowRuns.ended_at,
 | 
				
			||||||
 | 
					    org_id: workflow.org_id,
 | 
				
			||||||
 | 
					    ended_at: workflowRuns.ended_at,
 | 
				
			||||||
 | 
					    usage_time: usageTime,
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return usageTime;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ import { checkMarkIcon, crossMarkIcon } from "../const/Icon";
 | 
				
			|||||||
import { cn } from "@/lib/utils";
 | 
					import { cn } from "@/lib/utils";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  getPricing,
 | 
					  getPricing,
 | 
				
			||||||
 | 
					  getSubscription,
 | 
				
			||||||
  getSubscriptionItem,
 | 
					  getSubscriptionItem,
 | 
				
			||||||
  getUsage,
 | 
					  getUsage,
 | 
				
			||||||
  setUsage,
 | 
					  setUsage,
 | 
				
			||||||
@ -89,12 +90,14 @@ export default function PricingList() {
 | 
				
			|||||||
      // const currentUser = await getUserData();
 | 
					      // const currentUser = await getUserData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const userUsage = await getUsage();
 | 
					      const userUsage = await getUsage();
 | 
				
			||||||
      const userSubscription = await getSubscriptionItem();
 | 
					      const userSubscription = await getSubscription();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // const setUserUsage = await setUsage(236561, 10);
 | 
					      // const setUserUsage = await setUsage(236561, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // console.log(currentUser);
 | 
					      // console.log(currentUser);
 | 
				
			||||||
      console.log(userSubscription);
 | 
					      console.log(
 | 
				
			||||||
 | 
					        userSubscription.data[0].attributes.first_subscription_item.id
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    })();
 | 
					    })();
 | 
				
			||||||
  }, []);
 | 
					  }, []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,14 +1,14 @@
 | 
				
			|||||||
import { type InferSelectModel, relations } from "drizzle-orm";
 | 
					import { type InferSelectModel, relations } from "drizzle-orm";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
	boolean,
 | 
					  boolean,
 | 
				
			||||||
	integer,
 | 
					  integer,
 | 
				
			||||||
	jsonb,
 | 
					  jsonb,
 | 
				
			||||||
	pgEnum,
 | 
					  pgEnum,
 | 
				
			||||||
	pgSchema,
 | 
					  pgSchema,
 | 
				
			||||||
	text,
 | 
					  text,
 | 
				
			||||||
	timestamp,
 | 
					  timestamp,
 | 
				
			||||||
	uuid,
 | 
					  uuid,
 | 
				
			||||||
	real,
 | 
					  real,
 | 
				
			||||||
} from "drizzle-orm/pg-core";
 | 
					} from "drizzle-orm/pg-core";
 | 
				
			||||||
import { createInsertSchema } from "drizzle-zod";
 | 
					import { createInsertSchema } from "drizzle-zod";
 | 
				
			||||||
import { z } from "zod";
 | 
					import { z } from "zod";
 | 
				
			||||||
@ -131,30 +131,30 @@ export const machinesStatus = pgEnum("machine_status", [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// We still want to keep the workflow run record.
 | 
					// We still want to keep the workflow run record.
 | 
				
			||||||
export const workflowRunsTable = dbSchema.table("workflow_runs", {
 | 
					export const workflowRunsTable = dbSchema.table("workflow_runs", {
 | 
				
			||||||
	id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
					  id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
				
			||||||
	// when workflow version deleted, still want to keep this record
 | 
					  // when workflow version deleted, still want to keep this record
 | 
				
			||||||
	workflow_version_id: uuid("workflow_version_id").references(
 | 
					  workflow_version_id: uuid("workflow_version_id").references(
 | 
				
			||||||
		() => workflowVersionTable.id,
 | 
					    () => workflowVersionTable.id,
 | 
				
			||||||
		{
 | 
					    {
 | 
				
			||||||
			onDelete: "set null",
 | 
					      onDelete: "set null",
 | 
				
			||||||
		},
 | 
					    }
 | 
				
			||||||
	),
 | 
					  ),
 | 
				
			||||||
	workflow_inputs:
 | 
					  workflow_inputs:
 | 
				
			||||||
		jsonb("workflow_inputs").$type<Record<string, string | number>>(),
 | 
					    jsonb("workflow_inputs").$type<Record<string, string | number>>(),
 | 
				
			||||||
	workflow_id: uuid("workflow_id")
 | 
					  workflow_id: uuid("workflow_id")
 | 
				
			||||||
		.notNull()
 | 
					    .notNull()
 | 
				
			||||||
		.references(() => workflowTable.id, {
 | 
					    .references(() => workflowTable.id, {
 | 
				
			||||||
			onDelete: "cascade",
 | 
					      onDelete: "cascade",
 | 
				
			||||||
		}),
 | 
					    }),
 | 
				
			||||||
	// when machine deleted, still want to keep this record
 | 
					  // when machine deleted, still want to keep this record
 | 
				
			||||||
	machine_id: uuid("machine_id").references(() => machinesTable.id, {
 | 
					  machine_id: uuid("machine_id").references(() => machinesTable.id, {
 | 
				
			||||||
		onDelete: "set null",
 | 
					    onDelete: "set null",
 | 
				
			||||||
	}),
 | 
					  }),
 | 
				
			||||||
	origin: workflowRunOrigin("origin").notNull().default("api"),
 | 
					  origin: workflowRunOrigin("origin").notNull().default("api"),
 | 
				
			||||||
	status: workflowRunStatus("status").notNull().default("not-started"),
 | 
					  status: workflowRunStatus("status").notNull().default("not-started"),
 | 
				
			||||||
	ended_at: timestamp("ended_at"),
 | 
					  ended_at: timestamp("ended_at"),
 | 
				
			||||||
	created_at: timestamp("created_at").defaultNow().notNull(),
 | 
					  created_at: timestamp("created_at").defaultNow().notNull(),
 | 
				
			||||||
	started_at: timestamp("started_at"),
 | 
					  started_at: timestamp("started_at"),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const workflowRunRelations = relations(
 | 
					export const workflowRunRelations = relations(
 | 
				
			||||||
@ -258,31 +258,31 @@ export const showcaseMediaNullable = z
 | 
				
			|||||||
  .nullable();
 | 
					  .nullable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const deploymentsTable = dbSchema.table("deployments", {
 | 
					export const deploymentsTable = dbSchema.table("deployments", {
 | 
				
			||||||
	id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
					  id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
				
			||||||
	user_id: text("user_id")
 | 
					  user_id: text("user_id")
 | 
				
			||||||
		.references(() => usersTable.id, {
 | 
					    .references(() => usersTable.id, {
 | 
				
			||||||
			onDelete: "cascade",
 | 
					      onDelete: "cascade",
 | 
				
			||||||
		})
 | 
					    })
 | 
				
			||||||
		.notNull(),
 | 
					    .notNull(),
 | 
				
			||||||
	org_id: text("org_id"),
 | 
					  org_id: text("org_id"),
 | 
				
			||||||
	workflow_version_id: uuid("workflow_version_id")
 | 
					  workflow_version_id: uuid("workflow_version_id")
 | 
				
			||||||
		.notNull()
 | 
					    .notNull()
 | 
				
			||||||
		.references(() => workflowVersionTable.id),
 | 
					    .references(() => workflowVersionTable.id),
 | 
				
			||||||
	workflow_id: uuid("workflow_id")
 | 
					  workflow_id: uuid("workflow_id")
 | 
				
			||||||
		.notNull()
 | 
					    .notNull()
 | 
				
			||||||
		.references(() => workflowTable.id, {
 | 
					    .references(() => workflowTable.id, {
 | 
				
			||||||
			onDelete: "cascade",
 | 
					      onDelete: "cascade",
 | 
				
			||||||
		}),
 | 
					    }),
 | 
				
			||||||
	machine_id: uuid("machine_id")
 | 
					  machine_id: uuid("machine_id")
 | 
				
			||||||
		.notNull()
 | 
					    .notNull()
 | 
				
			||||||
		.references(() => machinesTable.id),
 | 
					    .references(() => machinesTable.id),
 | 
				
			||||||
	share_slug: text("share_slug").unique(),
 | 
					  share_slug: text("share_slug").unique(),
 | 
				
			||||||
	description: text("description"),
 | 
					  description: text("description"),
 | 
				
			||||||
	showcase_media:
 | 
					  showcase_media:
 | 
				
			||||||
		jsonb("showcase_media").$type<z.infer<typeof showcaseMedia>>(),
 | 
					    jsonb("showcase_media").$type<z.infer<typeof showcaseMedia>>(),
 | 
				
			||||||
	environment: deploymentEnvironment("environment").notNull(),
 | 
					  environment: deploymentEnvironment("environment").notNull(),
 | 
				
			||||||
	created_at: timestamp("created_at").defaultNow().notNull(),
 | 
					  created_at: timestamp("created_at").defaultNow().notNull(),
 | 
				
			||||||
	updated_at: timestamp("updated_at").defaultNow().notNull(),
 | 
					  updated_at: timestamp("updated_at").defaultNow().notNull(),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const publicShareDeployment = z.object({
 | 
					export const publicShareDeployment = z.object({
 | 
				
			||||||
@ -334,15 +334,15 @@ export const apiKeyTable = dbSchema.table("api_keys", {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const userUsageTable = dbSchema.table("user_usage", {
 | 
					export const userUsageTable = dbSchema.table("user_usage", {
 | 
				
			||||||
  id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
					  id: uuid("id").primaryKey().defaultRandom().notNull(),
 | 
				
			||||||
 | 
					  org_id: text("org_id"),
 | 
				
			||||||
  user_id: text("user_id")
 | 
					  user_id: text("user_id")
 | 
				
			||||||
    .references(() => usersTable.id, {
 | 
					    .references(() => usersTable.id, {
 | 
				
			||||||
      onDelete: "cascade",
 | 
					      onDelete: "cascade",
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    .notNull(),
 | 
					    .notNull(),
 | 
				
			||||||
  usage_time: real("usage_time").default(0).notNull(),
 | 
					  usage_time: real("usage_time").default(0).notNull(),
 | 
				
			||||||
 | 
					 | 
				
			||||||
  created_at: timestamp("created_at").defaultNow().notNull(),
 | 
					  created_at: timestamp("created_at").defaultNow().notNull(),
 | 
				
			||||||
  updated_at: timestamp("updated_at").defaultNow().notNull(),
 | 
					  ended_at: timestamp("ended_at").defaultNow().notNull(),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type UserType = InferSelectModel<typeof usersTable>;
 | 
					export type UserType = InferSelectModel<typeof usersTable>;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user