the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Daytona, Deno, Sprite and Vercel auth tables

+2226
+27
apps/api/src/schema/daytona-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const daytonaAuth = pgTable( 7 + "daytona_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + apiKey: text("api_key").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_daytona_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDaytonaAuth = InferSelectModel<typeof daytonaAuth>; 25 + export type InsertDaytonaAuth = InferInsertModel<typeof daytonaAuth>; 26 + 27 + export default daytonaAuth;
+27
apps/api/src/schema/deno-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const denoAuth = pgTable( 7 + "deno_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + deployToken: text("deploy_token").notNull(), 16 + userId: text("user_id") 17 + .notNull() 18 + .references(() => users.id), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_deno_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDenoAuth = InferSelectModel<typeof denoAuth>; 25 + export type InsertDenoAuth = InferInsertModel<typeof denoAuth>; 26 + 27 + export default denoAuth;
+8
apps/api/src/schema/index.ts
··· 13 13 import sshKeys from "./ssh-keys"; 14 14 import sandboxPorts from "./sandbox-ports"; 15 15 import services from "./services"; 16 + import daytonaAuth from "./daytona-auth"; 17 + import denoAuth from "./deno-auth"; 18 + import spriteAuth from "./sprite-auth"; 19 + import vercelAuth from "./vercel-auth"; 16 20 17 21 export default { 18 22 sandboxes, ··· 30 34 sshKeys, 31 35 sandboxPorts, 32 36 services, 37 + daytonaAuth, 38 + denoAuth, 39 + spriteAuth, 40 + vercelAuth, 33 41 };
+27
apps/api/src/schema/sprite-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const spriteAuth = pgTable( 7 + "sprite_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + spriteToken: text("sprite_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_sprite_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectSpriteAuth = InferSelectModel<typeof spriteAuth>; 25 + export type InsertSpriteAuth = InferInsertModel<typeof spriteAuth>; 26 + 27 + export default spriteAuth;
+27
apps/api/src/schema/vercel-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const vercelAuth = pgTable( 7 + "vercel_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + vercelToken: text("vercel_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_vercel_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectVercelAuth = InferSelectModel<typeof vercelAuth>; 25 + export type InsertVercelAuth = InferInsertModel<typeof vercelAuth>; 26 + 27 + export default vercelAuth;
+44
apps/cf-sandbox/drizzle/0036_fine_weapon_omega.sql
··· 1 + CREATE TABLE "daytona_auth" ( 2 + "id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, 3 + "sandbox_id" text NOT NULL, 4 + "user_id" text NOT NULL, 5 + "api_key" text NOT NULL, 6 + "created_at" timestamp DEFAULT now() NOT NULL 7 + ); 8 + --> statement-breakpoint 9 + CREATE TABLE "deno_auth" ( 10 + "id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, 11 + "sandbox_id" text NOT NULL, 12 + "deploy_token" text NOT NULL, 13 + "user_id" text NOT NULL, 14 + "created_at" timestamp DEFAULT now() NOT NULL 15 + ); 16 + --> statement-breakpoint 17 + CREATE TABLE "sprite_auth" ( 18 + "id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, 19 + "sandbox_id" text NOT NULL, 20 + "user_id" text NOT NULL, 21 + "sprite_token" text NOT NULL, 22 + "created_at" timestamp DEFAULT now() NOT NULL 23 + ); 24 + --> statement-breakpoint 25 + CREATE TABLE "vercel_auth" ( 26 + "id" text PRIMARY KEY DEFAULT xata_id() NOT NULL, 27 + "sandbox_id" text NOT NULL, 28 + "user_id" text NOT NULL, 29 + "vercel_token" text NOT NULL, 30 + "created_at" timestamp DEFAULT now() NOT NULL 31 + ); 32 + --> statement-breakpoint 33 + ALTER TABLE "daytona_auth" ADD CONSTRAINT "daytona_auth_sandbox_id_sandboxes_id_fk" FOREIGN KEY ("sandbox_id") REFERENCES "public"."sandboxes"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 34 + ALTER TABLE "daytona_auth" ADD CONSTRAINT "daytona_auth_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 35 + ALTER TABLE "deno_auth" ADD CONSTRAINT "deno_auth_sandbox_id_sandboxes_id_fk" FOREIGN KEY ("sandbox_id") REFERENCES "public"."sandboxes"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 36 + ALTER TABLE "deno_auth" ADD CONSTRAINT "deno_auth_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 37 + ALTER TABLE "sprite_auth" ADD CONSTRAINT "sprite_auth_sandbox_id_sandboxes_id_fk" FOREIGN KEY ("sandbox_id") REFERENCES "public"."sandboxes"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 38 + ALTER TABLE "sprite_auth" ADD CONSTRAINT "sprite_auth_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 39 + ALTER TABLE "vercel_auth" ADD CONSTRAINT "vercel_auth_sandbox_id_sandboxes_id_fk" FOREIGN KEY ("sandbox_id") REFERENCES "public"."sandboxes"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 40 + ALTER TABLE "vercel_auth" ADD CONSTRAINT "vercel_auth_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 41 + CREATE UNIQUE INDEX "unique_daytona_auth" ON "daytona_auth" USING btree ("sandbox_id","user_id");--> statement-breakpoint 42 + CREATE UNIQUE INDEX "unique_deno_auth" ON "deno_auth" USING btree ("sandbox_id","user_id");--> statement-breakpoint 43 + CREATE UNIQUE INDEX "unique_sprite_auth" ON "sprite_auth" USING btree ("sandbox_id","user_id");--> statement-breakpoint 44 + CREATE UNIQUE INDEX "unique_vercel_auth" ON "vercel_auth" USING btree ("sandbox_id","user_id");
+1827
apps/cf-sandbox/drizzle/meta/0036_snapshot.json
··· 1 + { 2 + "id": "cc9ddf0a-d95e-4e62-a1c4-fe18d484fc5c", 3 + "prevId": "71157d9a-a7f3-450f-a1b2-4b9a721cde4b", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.authorized_keys": { 8 + "name": "authorized_keys", 9 + "schema": "", 10 + "columns": { 11 + "id": { 12 + "name": "id", 13 + "type": "text", 14 + "primaryKey": true, 15 + "notNull": true, 16 + "default": "xata_id()" 17 + }, 18 + "sandbox_id": { 19 + "name": "sandbox_id", 20 + "type": "text", 21 + "primaryKey": false, 22 + "notNull": false 23 + }, 24 + "public_key": { 25 + "name": "public_key", 26 + "type": "text", 27 + "primaryKey": false, 28 + "notNull": true 29 + }, 30 + "created_at": { 31 + "name": "created_at", 32 + "type": "timestamp", 33 + "primaryKey": false, 34 + "notNull": true, 35 + "default": "now()" 36 + } 37 + }, 38 + "indexes": {}, 39 + "foreignKeys": { 40 + "authorized_keys_sandbox_id_sandboxes_id_fk": { 41 + "name": "authorized_keys_sandbox_id_sandboxes_id_fk", 42 + "tableFrom": "authorized_keys", 43 + "tableTo": "sandboxes", 44 + "columnsFrom": [ 45 + "sandbox_id" 46 + ], 47 + "columnsTo": [ 48 + "id" 49 + ], 50 + "onDelete": "no action", 51 + "onUpdate": "no action" 52 + } 53 + }, 54 + "compositePrimaryKeys": {}, 55 + "uniqueConstraints": {}, 56 + "policies": {}, 57 + "checkConstraints": {}, 58 + "isRLSEnabled": false 59 + }, 60 + "public.daytona_auth": { 61 + "name": "daytona_auth", 62 + "schema": "", 63 + "columns": { 64 + "id": { 65 + "name": "id", 66 + "type": "text", 67 + "primaryKey": true, 68 + "notNull": true, 69 + "default": "xata_id()" 70 + }, 71 + "sandbox_id": { 72 + "name": "sandbox_id", 73 + "type": "text", 74 + "primaryKey": false, 75 + "notNull": true 76 + }, 77 + "user_id": { 78 + "name": "user_id", 79 + "type": "text", 80 + "primaryKey": false, 81 + "notNull": true 82 + }, 83 + "api_key": { 84 + "name": "api_key", 85 + "type": "text", 86 + "primaryKey": false, 87 + "notNull": true 88 + }, 89 + "created_at": { 90 + "name": "created_at", 91 + "type": "timestamp", 92 + "primaryKey": false, 93 + "notNull": true, 94 + "default": "now()" 95 + } 96 + }, 97 + "indexes": { 98 + "unique_daytona_auth": { 99 + "name": "unique_daytona_auth", 100 + "columns": [ 101 + { 102 + "expression": "sandbox_id", 103 + "isExpression": false, 104 + "asc": true, 105 + "nulls": "last" 106 + }, 107 + { 108 + "expression": "user_id", 109 + "isExpression": false, 110 + "asc": true, 111 + "nulls": "last" 112 + } 113 + ], 114 + "isUnique": true, 115 + "concurrently": false, 116 + "method": "btree", 117 + "with": {} 118 + } 119 + }, 120 + "foreignKeys": { 121 + "daytona_auth_sandbox_id_sandboxes_id_fk": { 122 + "name": "daytona_auth_sandbox_id_sandboxes_id_fk", 123 + "tableFrom": "daytona_auth", 124 + "tableTo": "sandboxes", 125 + "columnsFrom": [ 126 + "sandbox_id" 127 + ], 128 + "columnsTo": [ 129 + "id" 130 + ], 131 + "onDelete": "cascade", 132 + "onUpdate": "no action" 133 + }, 134 + "daytona_auth_user_id_users_id_fk": { 135 + "name": "daytona_auth_user_id_users_id_fk", 136 + "tableFrom": "daytona_auth", 137 + "tableTo": "users", 138 + "columnsFrom": [ 139 + "user_id" 140 + ], 141 + "columnsTo": [ 142 + "id" 143 + ], 144 + "onDelete": "no action", 145 + "onUpdate": "no action" 146 + } 147 + }, 148 + "compositePrimaryKeys": {}, 149 + "uniqueConstraints": {}, 150 + "policies": {}, 151 + "checkConstraints": {}, 152 + "isRLSEnabled": false 153 + }, 154 + "public.deno_auth": { 155 + "name": "deno_auth", 156 + "schema": "", 157 + "columns": { 158 + "id": { 159 + "name": "id", 160 + "type": "text", 161 + "primaryKey": true, 162 + "notNull": true, 163 + "default": "xata_id()" 164 + }, 165 + "sandbox_id": { 166 + "name": "sandbox_id", 167 + "type": "text", 168 + "primaryKey": false, 169 + "notNull": true 170 + }, 171 + "deploy_token": { 172 + "name": "deploy_token", 173 + "type": "text", 174 + "primaryKey": false, 175 + "notNull": true 176 + }, 177 + "user_id": { 178 + "name": "user_id", 179 + "type": "text", 180 + "primaryKey": false, 181 + "notNull": true 182 + }, 183 + "created_at": { 184 + "name": "created_at", 185 + "type": "timestamp", 186 + "primaryKey": false, 187 + "notNull": true, 188 + "default": "now()" 189 + } 190 + }, 191 + "indexes": { 192 + "unique_deno_auth": { 193 + "name": "unique_deno_auth", 194 + "columns": [ 195 + { 196 + "expression": "sandbox_id", 197 + "isExpression": false, 198 + "asc": true, 199 + "nulls": "last" 200 + }, 201 + { 202 + "expression": "user_id", 203 + "isExpression": false, 204 + "asc": true, 205 + "nulls": "last" 206 + } 207 + ], 208 + "isUnique": true, 209 + "concurrently": false, 210 + "method": "btree", 211 + "with": {} 212 + } 213 + }, 214 + "foreignKeys": { 215 + "deno_auth_sandbox_id_sandboxes_id_fk": { 216 + "name": "deno_auth_sandbox_id_sandboxes_id_fk", 217 + "tableFrom": "deno_auth", 218 + "tableTo": "sandboxes", 219 + "columnsFrom": [ 220 + "sandbox_id" 221 + ], 222 + "columnsTo": [ 223 + "id" 224 + ], 225 + "onDelete": "cascade", 226 + "onUpdate": "no action" 227 + }, 228 + "deno_auth_user_id_users_id_fk": { 229 + "name": "deno_auth_user_id_users_id_fk", 230 + "tableFrom": "deno_auth", 231 + "tableTo": "users", 232 + "columnsFrom": [ 233 + "user_id" 234 + ], 235 + "columnsTo": [ 236 + "id" 237 + ], 238 + "onDelete": "no action", 239 + "onUpdate": "no action" 240 + } 241 + }, 242 + "compositePrimaryKeys": {}, 243 + "uniqueConstraints": {}, 244 + "policies": {}, 245 + "checkConstraints": {}, 246 + "isRLSEnabled": false 247 + }, 248 + "public.files": { 249 + "name": "files", 250 + "schema": "", 251 + "columns": { 252 + "id": { 253 + "name": "id", 254 + "type": "text", 255 + "primaryKey": true, 256 + "notNull": true, 257 + "default": "xata_id()" 258 + }, 259 + "content": { 260 + "name": "content", 261 + "type": "text", 262 + "primaryKey": false, 263 + "notNull": true 264 + }, 265 + "created_at": { 266 + "name": "created_at", 267 + "type": "timestamp", 268 + "primaryKey": false, 269 + "notNull": true, 270 + "default": "now()" 271 + }, 272 + "updated_at": { 273 + "name": "updated_at", 274 + "type": "timestamp", 275 + "primaryKey": false, 276 + "notNull": true, 277 + "default": "now()" 278 + } 279 + }, 280 + "indexes": {}, 281 + "foreignKeys": {}, 282 + "compositePrimaryKeys": {}, 283 + "uniqueConstraints": {}, 284 + "policies": {}, 285 + "checkConstraints": {}, 286 + "isRLSEnabled": false 287 + }, 288 + "public.sandbox_files": { 289 + "name": "sandbox_files", 290 + "schema": "", 291 + "columns": { 292 + "id": { 293 + "name": "id", 294 + "type": "text", 295 + "primaryKey": true, 296 + "notNull": true, 297 + "default": "file_id()" 298 + }, 299 + "sandbox_id": { 300 + "name": "sandbox_id", 301 + "type": "text", 302 + "primaryKey": false, 303 + "notNull": true 304 + }, 305 + "file_id": { 306 + "name": "file_id", 307 + "type": "text", 308 + "primaryKey": false, 309 + "notNull": true 310 + }, 311 + "path": { 312 + "name": "path", 313 + "type": "text", 314 + "primaryKey": false, 315 + "notNull": true 316 + }, 317 + "created_at": { 318 + "name": "created_at", 319 + "type": "timestamp", 320 + "primaryKey": false, 321 + "notNull": true, 322 + "default": "now()" 323 + }, 324 + "updated_at": { 325 + "name": "updated_at", 326 + "type": "timestamp", 327 + "primaryKey": false, 328 + "notNull": true, 329 + "default": "now()" 330 + } 331 + }, 332 + "indexes": { 333 + "unique_sandbox_file_path": { 334 + "name": "unique_sandbox_file_path", 335 + "columns": [ 336 + { 337 + "expression": "sandbox_id", 338 + "isExpression": false, 339 + "asc": true, 340 + "nulls": "last" 341 + }, 342 + { 343 + "expression": "path", 344 + "isExpression": false, 345 + "asc": true, 346 + "nulls": "last" 347 + } 348 + ], 349 + "isUnique": true, 350 + "concurrently": false, 351 + "method": "btree", 352 + "with": {} 353 + } 354 + }, 355 + "foreignKeys": { 356 + "sandbox_files_sandbox_id_sandboxes_id_fk": { 357 + "name": "sandbox_files_sandbox_id_sandboxes_id_fk", 358 + "tableFrom": "sandbox_files", 359 + "tableTo": "sandboxes", 360 + "columnsFrom": [ 361 + "sandbox_id" 362 + ], 363 + "columnsTo": [ 364 + "id" 365 + ], 366 + "onDelete": "cascade", 367 + "onUpdate": "no action" 368 + }, 369 + "sandbox_files_file_id_files_id_fk": { 370 + "name": "sandbox_files_file_id_files_id_fk", 371 + "tableFrom": "sandbox_files", 372 + "tableTo": "files", 373 + "columnsFrom": [ 374 + "file_id" 375 + ], 376 + "columnsTo": [ 377 + "id" 378 + ], 379 + "onDelete": "no action", 380 + "onUpdate": "no action" 381 + } 382 + }, 383 + "compositePrimaryKeys": {}, 384 + "uniqueConstraints": {}, 385 + "policies": {}, 386 + "checkConstraints": {}, 387 + "isRLSEnabled": false 388 + }, 389 + "public.sandbox_ports": { 390 + "name": "sandbox_ports", 391 + "schema": "", 392 + "columns": { 393 + "id": { 394 + "name": "id", 395 + "type": "text", 396 + "primaryKey": true, 397 + "notNull": true, 398 + "default": "xata_id()" 399 + }, 400 + "sandbox_id": { 401 + "name": "sandbox_id", 402 + "type": "text", 403 + "primaryKey": false, 404 + "notNull": true 405 + }, 406 + "exposed_port": { 407 + "name": "exposed_port", 408 + "type": "integer", 409 + "primaryKey": false, 410 + "notNull": true 411 + }, 412 + "preview_url": { 413 + "name": "preview_url", 414 + "type": "text", 415 + "primaryKey": false, 416 + "notNull": false 417 + }, 418 + "description": { 419 + "name": "description", 420 + "type": "text", 421 + "primaryKey": false, 422 + "notNull": false 423 + }, 424 + "service_id": { 425 + "name": "service_id", 426 + "type": "text", 427 + "primaryKey": false, 428 + "notNull": false 429 + }, 430 + "created_at": { 431 + "name": "created_at", 432 + "type": "timestamp", 433 + "primaryKey": false, 434 + "notNull": true, 435 + "default": "now()" 436 + }, 437 + "updated_at": { 438 + "name": "updated_at", 439 + "type": "timestamp", 440 + "primaryKey": false, 441 + "notNull": true, 442 + "default": "now()" 443 + } 444 + }, 445 + "indexes": { 446 + "unique_sandbox_port": { 447 + "name": "unique_sandbox_port", 448 + "columns": [ 449 + { 450 + "expression": "sandbox_id", 451 + "isExpression": false, 452 + "asc": true, 453 + "nulls": "last" 454 + }, 455 + { 456 + "expression": "exposed_port", 457 + "isExpression": false, 458 + "asc": true, 459 + "nulls": "last" 460 + } 461 + ], 462 + "isUnique": true, 463 + "concurrently": false, 464 + "method": "btree", 465 + "with": {} 466 + } 467 + }, 468 + "foreignKeys": { 469 + "sandbox_ports_sandbox_id_sandboxes_id_fk": { 470 + "name": "sandbox_ports_sandbox_id_sandboxes_id_fk", 471 + "tableFrom": "sandbox_ports", 472 + "tableTo": "sandboxes", 473 + "columnsFrom": [ 474 + "sandbox_id" 475 + ], 476 + "columnsTo": [ 477 + "id" 478 + ], 479 + "onDelete": "cascade", 480 + "onUpdate": "no action" 481 + }, 482 + "sandbox_ports_service_id_services_id_fk": { 483 + "name": "sandbox_ports_service_id_services_id_fk", 484 + "tableFrom": "sandbox_ports", 485 + "tableTo": "services", 486 + "columnsFrom": [ 487 + "service_id" 488 + ], 489 + "columnsTo": [ 490 + "id" 491 + ], 492 + "onDelete": "no action", 493 + "onUpdate": "no action" 494 + } 495 + }, 496 + "compositePrimaryKeys": {}, 497 + "uniqueConstraints": {}, 498 + "policies": {}, 499 + "checkConstraints": {}, 500 + "isRLSEnabled": false 501 + }, 502 + "public.sandbox_secrets": { 503 + "name": "sandbox_secrets", 504 + "schema": "", 505 + "columns": { 506 + "id": { 507 + "name": "id", 508 + "type": "text", 509 + "primaryKey": true, 510 + "notNull": true, 511 + "default": "xata_id()" 512 + }, 513 + "sandbox_id": { 514 + "name": "sandbox_id", 515 + "type": "text", 516 + "primaryKey": false, 517 + "notNull": true 518 + }, 519 + "secret_id": { 520 + "name": "secret_id", 521 + "type": "text", 522 + "primaryKey": false, 523 + "notNull": true 524 + }, 525 + "name": { 526 + "name": "name", 527 + "type": "text", 528 + "primaryKey": false, 529 + "notNull": false 530 + }, 531 + "created_at": { 532 + "name": "created_at", 533 + "type": "timestamp", 534 + "primaryKey": false, 535 + "notNull": true, 536 + "default": "now()" 537 + }, 538 + "updated_at": { 539 + "name": "updated_at", 540 + "type": "timestamp", 541 + "primaryKey": false, 542 + "notNull": true, 543 + "default": "now()" 544 + } 545 + }, 546 + "indexes": { 547 + "unique_sandbox_secret_by_name": { 548 + "name": "unique_sandbox_secret_by_name", 549 + "columns": [ 550 + { 551 + "expression": "sandbox_id", 552 + "isExpression": false, 553 + "asc": true, 554 + "nulls": "last" 555 + }, 556 + { 557 + "expression": "name", 558 + "isExpression": false, 559 + "asc": true, 560 + "nulls": "last" 561 + } 562 + ], 563 + "isUnique": true, 564 + "concurrently": false, 565 + "method": "btree", 566 + "with": {} 567 + } 568 + }, 569 + "foreignKeys": { 570 + "sandbox_secrets_sandbox_id_sandboxes_id_fk": { 571 + "name": "sandbox_secrets_sandbox_id_sandboxes_id_fk", 572 + "tableFrom": "sandbox_secrets", 573 + "tableTo": "sandboxes", 574 + "columnsFrom": [ 575 + "sandbox_id" 576 + ], 577 + "columnsTo": [ 578 + "id" 579 + ], 580 + "onDelete": "cascade", 581 + "onUpdate": "no action" 582 + }, 583 + "sandbox_secrets_secret_id_secrets_id_fk": { 584 + "name": "sandbox_secrets_secret_id_secrets_id_fk", 585 + "tableFrom": "sandbox_secrets", 586 + "tableTo": "secrets", 587 + "columnsFrom": [ 588 + "secret_id" 589 + ], 590 + "columnsTo": [ 591 + "id" 592 + ], 593 + "onDelete": "no action", 594 + "onUpdate": "no action" 595 + } 596 + }, 597 + "compositePrimaryKeys": {}, 598 + "uniqueConstraints": {}, 599 + "policies": {}, 600 + "checkConstraints": {}, 601 + "isRLSEnabled": false 602 + }, 603 + "public.sandbox_variables": { 604 + "name": "sandbox_variables", 605 + "schema": "", 606 + "columns": { 607 + "id": { 608 + "name": "id", 609 + "type": "text", 610 + "primaryKey": true, 611 + "notNull": true, 612 + "default": "xata_id()" 613 + }, 614 + "sandbox_id": { 615 + "name": "sandbox_id", 616 + "type": "text", 617 + "primaryKey": false, 618 + "notNull": true 619 + }, 620 + "variable_id": { 621 + "name": "variable_id", 622 + "type": "text", 623 + "primaryKey": false, 624 + "notNull": true 625 + }, 626 + "name": { 627 + "name": "name", 628 + "type": "text", 629 + "primaryKey": false, 630 + "notNull": true 631 + }, 632 + "created_at": { 633 + "name": "created_at", 634 + "type": "timestamp", 635 + "primaryKey": false, 636 + "notNull": true, 637 + "default": "now()" 638 + }, 639 + "updated_at": { 640 + "name": "updated_at", 641 + "type": "timestamp", 642 + "primaryKey": false, 643 + "notNull": true, 644 + "default": "now()" 645 + } 646 + }, 647 + "indexes": { 648 + "unique_sandbox_variables_by_name": { 649 + "name": "unique_sandbox_variables_by_name", 650 + "columns": [ 651 + { 652 + "expression": "sandbox_id", 653 + "isExpression": false, 654 + "asc": true, 655 + "nulls": "last" 656 + }, 657 + { 658 + "expression": "name", 659 + "isExpression": false, 660 + "asc": true, 661 + "nulls": "last" 662 + } 663 + ], 664 + "isUnique": true, 665 + "concurrently": false, 666 + "method": "btree", 667 + "with": {} 668 + } 669 + }, 670 + "foreignKeys": { 671 + "sandbox_variables_sandbox_id_sandboxes_id_fk": { 672 + "name": "sandbox_variables_sandbox_id_sandboxes_id_fk", 673 + "tableFrom": "sandbox_variables", 674 + "tableTo": "sandboxes", 675 + "columnsFrom": [ 676 + "sandbox_id" 677 + ], 678 + "columnsTo": [ 679 + "id" 680 + ], 681 + "onDelete": "cascade", 682 + "onUpdate": "no action" 683 + }, 684 + "sandbox_variables_variable_id_variables_id_fk": { 685 + "name": "sandbox_variables_variable_id_variables_id_fk", 686 + "tableFrom": "sandbox_variables", 687 + "tableTo": "variables", 688 + "columnsFrom": [ 689 + "variable_id" 690 + ], 691 + "columnsTo": [ 692 + "id" 693 + ], 694 + "onDelete": "no action", 695 + "onUpdate": "no action" 696 + } 697 + }, 698 + "compositePrimaryKeys": {}, 699 + "uniqueConstraints": {}, 700 + "policies": {}, 701 + "checkConstraints": {}, 702 + "isRLSEnabled": false 703 + }, 704 + "public.sandbox_volumes": { 705 + "name": "sandbox_volumes", 706 + "schema": "", 707 + "columns": { 708 + "id": { 709 + "name": "id", 710 + "type": "text", 711 + "primaryKey": true, 712 + "notNull": true, 713 + "default": "volume_id()" 714 + }, 715 + "sandbox_id": { 716 + "name": "sandbox_id", 717 + "type": "text", 718 + "primaryKey": false, 719 + "notNull": true 720 + }, 721 + "volume_id": { 722 + "name": "volume_id", 723 + "type": "text", 724 + "primaryKey": false, 725 + "notNull": true 726 + }, 727 + "name": { 728 + "name": "name", 729 + "type": "text", 730 + "primaryKey": false, 731 + "notNull": false 732 + }, 733 + "path": { 734 + "name": "path", 735 + "type": "text", 736 + "primaryKey": false, 737 + "notNull": true 738 + }, 739 + "created_at": { 740 + "name": "created_at", 741 + "type": "timestamp", 742 + "primaryKey": false, 743 + "notNull": true, 744 + "default": "now()" 745 + }, 746 + "updated_at": { 747 + "name": "updated_at", 748 + "type": "timestamp", 749 + "primaryKey": false, 750 + "notNull": true, 751 + "default": "now()" 752 + } 753 + }, 754 + "indexes": { 755 + "unique_sandbox_volume_path": { 756 + "name": "unique_sandbox_volume_path", 757 + "columns": [ 758 + { 759 + "expression": "sandbox_id", 760 + "isExpression": false, 761 + "asc": true, 762 + "nulls": "last" 763 + }, 764 + { 765 + "expression": "path", 766 + "isExpression": false, 767 + "asc": true, 768 + "nulls": "last" 769 + } 770 + ], 771 + "isUnique": true, 772 + "concurrently": false, 773 + "method": "btree", 774 + "with": {} 775 + } 776 + }, 777 + "foreignKeys": { 778 + "sandbox_volumes_sandbox_id_sandboxes_id_fk": { 779 + "name": "sandbox_volumes_sandbox_id_sandboxes_id_fk", 780 + "tableFrom": "sandbox_volumes", 781 + "tableTo": "sandboxes", 782 + "columnsFrom": [ 783 + "sandbox_id" 784 + ], 785 + "columnsTo": [ 786 + "id" 787 + ], 788 + "onDelete": "cascade", 789 + "onUpdate": "no action" 790 + }, 791 + "sandbox_volumes_volume_id_volumes_id_fk": { 792 + "name": "sandbox_volumes_volume_id_volumes_id_fk", 793 + "tableFrom": "sandbox_volumes", 794 + "tableTo": "volumes", 795 + "columnsFrom": [ 796 + "volume_id" 797 + ], 798 + "columnsTo": [ 799 + "id" 800 + ], 801 + "onDelete": "no action", 802 + "onUpdate": "no action" 803 + } 804 + }, 805 + "compositePrimaryKeys": {}, 806 + "uniqueConstraints": {}, 807 + "policies": {}, 808 + "checkConstraints": {}, 809 + "isRLSEnabled": false 810 + }, 811 + "public.sandboxes": { 812 + "name": "sandboxes", 813 + "schema": "", 814 + "columns": { 815 + "id": { 816 + "name": "id", 817 + "type": "text", 818 + "primaryKey": true, 819 + "notNull": true, 820 + "default": "sandbox_id()" 821 + }, 822 + "base": { 823 + "name": "base", 824 + "type": "text", 825 + "primaryKey": false, 826 + "notNull": false 827 + }, 828 + "name": { 829 + "name": "name", 830 + "type": "text", 831 + "primaryKey": false, 832 + "notNull": true 833 + }, 834 + "display_name": { 835 + "name": "display_name", 836 + "type": "text", 837 + "primaryKey": false, 838 + "notNull": false 839 + }, 840 + "uri": { 841 + "name": "uri", 842 + "type": "text", 843 + "primaryKey": false, 844 + "notNull": false 845 + }, 846 + "cid": { 847 + "name": "cid", 848 + "type": "text", 849 + "primaryKey": false, 850 + "notNull": false 851 + }, 852 + "repo": { 853 + "name": "repo", 854 + "type": "text", 855 + "primaryKey": false, 856 + "notNull": false 857 + }, 858 + "provider": { 859 + "name": "provider", 860 + "type": "text", 861 + "primaryKey": false, 862 + "notNull": true, 863 + "default": "'cloudflare'" 864 + }, 865 + "description": { 866 + "name": "description", 867 + "type": "text", 868 + "primaryKey": false, 869 + "notNull": false 870 + }, 871 + "topics": { 872 + "name": "topics", 873 + "type": "text[]", 874 + "primaryKey": false, 875 + "notNull": false 876 + }, 877 + "logo": { 878 + "name": "logo", 879 + "type": "text", 880 + "primaryKey": false, 881 + "notNull": false 882 + }, 883 + "readme": { 884 + "name": "readme", 885 + "type": "text", 886 + "primaryKey": false, 887 + "notNull": false 888 + }, 889 + "public_key": { 890 + "name": "public_key", 891 + "type": "text", 892 + "primaryKey": false, 893 + "notNull": true 894 + }, 895 + "user_id": { 896 + "name": "user_id", 897 + "type": "text", 898 + "primaryKey": false, 899 + "notNull": false 900 + }, 901 + "instance_type": { 902 + "name": "instance_type", 903 + "type": "text", 904 + "primaryKey": false, 905 + "notNull": false 906 + }, 907 + "vcpus": { 908 + "name": "vcpus", 909 + "type": "integer", 910 + "primaryKey": false, 911 + "notNull": false 912 + }, 913 + "memory": { 914 + "name": "memory", 915 + "type": "integer", 916 + "primaryKey": false, 917 + "notNull": false 918 + }, 919 + "disk": { 920 + "name": "disk", 921 + "type": "integer", 922 + "primaryKey": false, 923 + "notNull": false 924 + }, 925 + "status": { 926 + "name": "status", 927 + "type": "text", 928 + "primaryKey": false, 929 + "notNull": true 930 + }, 931 + "keep_alive": { 932 + "name": "keep_alive", 933 + "type": "boolean", 934 + "primaryKey": false, 935 + "notNull": true, 936 + "default": false 937 + }, 938 + "sleep_after": { 939 + "name": "sleep_after", 940 + "type": "text", 941 + "primaryKey": false, 942 + "notNull": false 943 + }, 944 + "sandbox_id": { 945 + "name": "sandbox_id", 946 + "type": "text", 947 + "primaryKey": false, 948 + "notNull": false 949 + }, 950 + "installs": { 951 + "name": "installs", 952 + "type": "integer", 953 + "primaryKey": false, 954 + "notNull": true, 955 + "default": 0 956 + }, 957 + "started_at": { 958 + "name": "started_at", 959 + "type": "timestamp", 960 + "primaryKey": false, 961 + "notNull": false 962 + }, 963 + "created_at": { 964 + "name": "created_at", 965 + "type": "timestamp", 966 + "primaryKey": false, 967 + "notNull": true, 968 + "default": "now()" 969 + }, 970 + "updated_at": { 971 + "name": "updated_at", 972 + "type": "timestamp", 973 + "primaryKey": false, 974 + "notNull": true, 975 + "default": "now()" 976 + } 977 + }, 978 + "indexes": {}, 979 + "foreignKeys": { 980 + "sandboxes_user_id_users_id_fk": { 981 + "name": "sandboxes_user_id_users_id_fk", 982 + "tableFrom": "sandboxes", 983 + "tableTo": "users", 984 + "columnsFrom": [ 985 + "user_id" 986 + ], 987 + "columnsTo": [ 988 + "id" 989 + ], 990 + "onDelete": "no action", 991 + "onUpdate": "no action" 992 + } 993 + }, 994 + "compositePrimaryKeys": {}, 995 + "uniqueConstraints": { 996 + "sandboxes_name_unique": { 997 + "name": "sandboxes_name_unique", 998 + "nullsNotDistinct": false, 999 + "columns": [ 1000 + "name" 1001 + ] 1002 + }, 1003 + "sandboxes_uri_unique": { 1004 + "name": "sandboxes_uri_unique", 1005 + "nullsNotDistinct": false, 1006 + "columns": [ 1007 + "uri" 1008 + ] 1009 + }, 1010 + "sandboxes_cid_unique": { 1011 + "name": "sandboxes_cid_unique", 1012 + "nullsNotDistinct": false, 1013 + "columns": [ 1014 + "cid" 1015 + ] 1016 + } 1017 + }, 1018 + "policies": {}, 1019 + "checkConstraints": {}, 1020 + "isRLSEnabled": false 1021 + }, 1022 + "public.secrets": { 1023 + "name": "secrets", 1024 + "schema": "", 1025 + "columns": { 1026 + "id": { 1027 + "name": "id", 1028 + "type": "text", 1029 + "primaryKey": true, 1030 + "notNull": true, 1031 + "default": "secret_id()" 1032 + }, 1033 + "name": { 1034 + "name": "name", 1035 + "type": "text", 1036 + "primaryKey": false, 1037 + "notNull": true 1038 + }, 1039 + "value": { 1040 + "name": "value", 1041 + "type": "text", 1042 + "primaryKey": false, 1043 + "notNull": true 1044 + }, 1045 + "redacted": { 1046 + "name": "redacted", 1047 + "type": "text", 1048 + "primaryKey": false, 1049 + "notNull": false 1050 + }, 1051 + "created_at": { 1052 + "name": "created_at", 1053 + "type": "timestamp", 1054 + "primaryKey": false, 1055 + "notNull": true, 1056 + "default": "now()" 1057 + } 1058 + }, 1059 + "indexes": {}, 1060 + "foreignKeys": {}, 1061 + "compositePrimaryKeys": {}, 1062 + "uniqueConstraints": {}, 1063 + "policies": {}, 1064 + "checkConstraints": {}, 1065 + "isRLSEnabled": false 1066 + }, 1067 + "public.services": { 1068 + "name": "services", 1069 + "schema": "", 1070 + "columns": { 1071 + "id": { 1072 + "name": "id", 1073 + "type": "text", 1074 + "primaryKey": true, 1075 + "notNull": true, 1076 + "default": "xata_id()" 1077 + }, 1078 + "sandbox_id": { 1079 + "name": "sandbox_id", 1080 + "type": "text", 1081 + "primaryKey": false, 1082 + "notNull": true 1083 + }, 1084 + "name": { 1085 + "name": "name", 1086 + "type": "text", 1087 + "primaryKey": false, 1088 + "notNull": true 1089 + }, 1090 + "command": { 1091 + "name": "command", 1092 + "type": "text", 1093 + "primaryKey": false, 1094 + "notNull": true 1095 + }, 1096 + "description": { 1097 + "name": "description", 1098 + "type": "text", 1099 + "primaryKey": false, 1100 + "notNull": false 1101 + }, 1102 + "service_id": { 1103 + "name": "service_id", 1104 + "type": "text", 1105 + "primaryKey": false, 1106 + "notNull": false 1107 + }, 1108 + "status": { 1109 + "name": "status", 1110 + "type": "text", 1111 + "primaryKey": false, 1112 + "notNull": true, 1113 + "default": "'STOPPED'" 1114 + }, 1115 + "created_at": { 1116 + "name": "created_at", 1117 + "type": "timestamp", 1118 + "primaryKey": false, 1119 + "notNull": true, 1120 + "default": "now()" 1121 + }, 1122 + "updated_at": { 1123 + "name": "updated_at", 1124 + "type": "timestamp", 1125 + "primaryKey": false, 1126 + "notNull": true, 1127 + "default": "now()" 1128 + } 1129 + }, 1130 + "indexes": { 1131 + "unique_sandbox_service": { 1132 + "name": "unique_sandbox_service", 1133 + "columns": [ 1134 + { 1135 + "expression": "name", 1136 + "isExpression": false, 1137 + "asc": true, 1138 + "nulls": "last" 1139 + }, 1140 + { 1141 + "expression": "sandbox_id", 1142 + "isExpression": false, 1143 + "asc": true, 1144 + "nulls": "last" 1145 + } 1146 + ], 1147 + "isUnique": true, 1148 + "concurrently": false, 1149 + "method": "btree", 1150 + "with": {} 1151 + } 1152 + }, 1153 + "foreignKeys": { 1154 + "services_sandbox_id_sandboxes_id_fk": { 1155 + "name": "services_sandbox_id_sandboxes_id_fk", 1156 + "tableFrom": "services", 1157 + "tableTo": "sandboxes", 1158 + "columnsFrom": [ 1159 + "sandbox_id" 1160 + ], 1161 + "columnsTo": [ 1162 + "id" 1163 + ], 1164 + "onDelete": "cascade", 1165 + "onUpdate": "no action" 1166 + } 1167 + }, 1168 + "compositePrimaryKeys": {}, 1169 + "uniqueConstraints": {}, 1170 + "policies": {}, 1171 + "checkConstraints": {}, 1172 + "isRLSEnabled": false 1173 + }, 1174 + "public.snapshots": { 1175 + "name": "snapshots", 1176 + "schema": "", 1177 + "columns": { 1178 + "id": { 1179 + "name": "id", 1180 + "type": "text", 1181 + "primaryKey": true, 1182 + "notNull": true, 1183 + "default": "snapshot_id()" 1184 + }, 1185 + "slug": { 1186 + "name": "slug", 1187 + "type": "text", 1188 + "primaryKey": false, 1189 + "notNull": true 1190 + }, 1191 + "created_at": { 1192 + "name": "created_at", 1193 + "type": "timestamp", 1194 + "primaryKey": false, 1195 + "notNull": true, 1196 + "default": "now()" 1197 + } 1198 + }, 1199 + "indexes": {}, 1200 + "foreignKeys": {}, 1201 + "compositePrimaryKeys": {}, 1202 + "uniqueConstraints": { 1203 + "snapshots_slug_unique": { 1204 + "name": "snapshots_slug_unique", 1205 + "nullsNotDistinct": false, 1206 + "columns": [ 1207 + "slug" 1208 + ] 1209 + } 1210 + }, 1211 + "policies": {}, 1212 + "checkConstraints": {}, 1213 + "isRLSEnabled": false 1214 + }, 1215 + "public.sprite_auth": { 1216 + "name": "sprite_auth", 1217 + "schema": "", 1218 + "columns": { 1219 + "id": { 1220 + "name": "id", 1221 + "type": "text", 1222 + "primaryKey": true, 1223 + "notNull": true, 1224 + "default": "xata_id()" 1225 + }, 1226 + "sandbox_id": { 1227 + "name": "sandbox_id", 1228 + "type": "text", 1229 + "primaryKey": false, 1230 + "notNull": true 1231 + }, 1232 + "user_id": { 1233 + "name": "user_id", 1234 + "type": "text", 1235 + "primaryKey": false, 1236 + "notNull": true 1237 + }, 1238 + "sprite_token": { 1239 + "name": "sprite_token", 1240 + "type": "text", 1241 + "primaryKey": false, 1242 + "notNull": true 1243 + }, 1244 + "created_at": { 1245 + "name": "created_at", 1246 + "type": "timestamp", 1247 + "primaryKey": false, 1248 + "notNull": true, 1249 + "default": "now()" 1250 + } 1251 + }, 1252 + "indexes": { 1253 + "unique_sprite_auth": { 1254 + "name": "unique_sprite_auth", 1255 + "columns": [ 1256 + { 1257 + "expression": "sandbox_id", 1258 + "isExpression": false, 1259 + "asc": true, 1260 + "nulls": "last" 1261 + }, 1262 + { 1263 + "expression": "user_id", 1264 + "isExpression": false, 1265 + "asc": true, 1266 + "nulls": "last" 1267 + } 1268 + ], 1269 + "isUnique": true, 1270 + "concurrently": false, 1271 + "method": "btree", 1272 + "with": {} 1273 + } 1274 + }, 1275 + "foreignKeys": { 1276 + "sprite_auth_sandbox_id_sandboxes_id_fk": { 1277 + "name": "sprite_auth_sandbox_id_sandboxes_id_fk", 1278 + "tableFrom": "sprite_auth", 1279 + "tableTo": "sandboxes", 1280 + "columnsFrom": [ 1281 + "sandbox_id" 1282 + ], 1283 + "columnsTo": [ 1284 + "id" 1285 + ], 1286 + "onDelete": "cascade", 1287 + "onUpdate": "no action" 1288 + }, 1289 + "sprite_auth_user_id_users_id_fk": { 1290 + "name": "sprite_auth_user_id_users_id_fk", 1291 + "tableFrom": "sprite_auth", 1292 + "tableTo": "users", 1293 + "columnsFrom": [ 1294 + "user_id" 1295 + ], 1296 + "columnsTo": [ 1297 + "id" 1298 + ], 1299 + "onDelete": "no action", 1300 + "onUpdate": "no action" 1301 + } 1302 + }, 1303 + "compositePrimaryKeys": {}, 1304 + "uniqueConstraints": {}, 1305 + "policies": {}, 1306 + "checkConstraints": {}, 1307 + "isRLSEnabled": false 1308 + }, 1309 + "public.ssh_keys": { 1310 + "name": "ssh_keys", 1311 + "schema": "", 1312 + "columns": { 1313 + "id": { 1314 + "name": "id", 1315 + "type": "text", 1316 + "primaryKey": true, 1317 + "notNull": true, 1318 + "default": "xata_id()" 1319 + }, 1320 + "sandbox_id": { 1321 + "name": "sandbox_id", 1322 + "type": "text", 1323 + "primaryKey": false, 1324 + "notNull": true 1325 + }, 1326 + "public_key": { 1327 + "name": "public_key", 1328 + "type": "text", 1329 + "primaryKey": false, 1330 + "notNull": true 1331 + }, 1332 + "private_key": { 1333 + "name": "private_key", 1334 + "type": "text", 1335 + "primaryKey": false, 1336 + "notNull": true 1337 + }, 1338 + "redacted": { 1339 + "name": "redacted", 1340 + "type": "text", 1341 + "primaryKey": false, 1342 + "notNull": false 1343 + }, 1344 + "created_at": { 1345 + "name": "created_at", 1346 + "type": "timestamp", 1347 + "primaryKey": false, 1348 + "notNull": true, 1349 + "default": "now()" 1350 + } 1351 + }, 1352 + "indexes": { 1353 + "unique_sandbox_ssh_key": { 1354 + "name": "unique_sandbox_ssh_key", 1355 + "columns": [ 1356 + { 1357 + "expression": "public_key", 1358 + "isExpression": false, 1359 + "asc": true, 1360 + "nulls": "last" 1361 + }, 1362 + { 1363 + "expression": "sandbox_id", 1364 + "isExpression": false, 1365 + "asc": true, 1366 + "nulls": "last" 1367 + } 1368 + ], 1369 + "isUnique": true, 1370 + "concurrently": false, 1371 + "method": "btree", 1372 + "with": {} 1373 + } 1374 + }, 1375 + "foreignKeys": { 1376 + "ssh_keys_sandbox_id_sandboxes_id_fk": { 1377 + "name": "ssh_keys_sandbox_id_sandboxes_id_fk", 1378 + "tableFrom": "ssh_keys", 1379 + "tableTo": "sandboxes", 1380 + "columnsFrom": [ 1381 + "sandbox_id" 1382 + ], 1383 + "columnsTo": [ 1384 + "id" 1385 + ], 1386 + "onDelete": "cascade", 1387 + "onUpdate": "no action" 1388 + } 1389 + }, 1390 + "compositePrimaryKeys": {}, 1391 + "uniqueConstraints": {}, 1392 + "policies": {}, 1393 + "checkConstraints": {}, 1394 + "isRLSEnabled": false 1395 + }, 1396 + "public.tailscale_auth_keys": { 1397 + "name": "tailscale_auth_keys", 1398 + "schema": "", 1399 + "columns": { 1400 + "id": { 1401 + "name": "id", 1402 + "type": "text", 1403 + "primaryKey": true, 1404 + "notNull": true, 1405 + "default": "xata_id()" 1406 + }, 1407 + "sandbox_id": { 1408 + "name": "sandbox_id", 1409 + "type": "text", 1410 + "primaryKey": false, 1411 + "notNull": true 1412 + }, 1413 + "auth_key": { 1414 + "name": "auth_key", 1415 + "type": "text", 1416 + "primaryKey": false, 1417 + "notNull": true 1418 + }, 1419 + "redacted": { 1420 + "name": "redacted", 1421 + "type": "text", 1422 + "primaryKey": false, 1423 + "notNull": true 1424 + }, 1425 + "created_at": { 1426 + "name": "created_at", 1427 + "type": "timestamp", 1428 + "primaryKey": false, 1429 + "notNull": true, 1430 + "default": "now()" 1431 + } 1432 + }, 1433 + "indexes": {}, 1434 + "foreignKeys": { 1435 + "tailscale_auth_keys_sandbox_id_sandboxes_id_fk": { 1436 + "name": "tailscale_auth_keys_sandbox_id_sandboxes_id_fk", 1437 + "tableFrom": "tailscale_auth_keys", 1438 + "tableTo": "sandboxes", 1439 + "columnsFrom": [ 1440 + "sandbox_id" 1441 + ], 1442 + "columnsTo": [ 1443 + "id" 1444 + ], 1445 + "onDelete": "cascade", 1446 + "onUpdate": "no action" 1447 + } 1448 + }, 1449 + "compositePrimaryKeys": {}, 1450 + "uniqueConstraints": {}, 1451 + "policies": {}, 1452 + "checkConstraints": {}, 1453 + "isRLSEnabled": false 1454 + }, 1455 + "public.users": { 1456 + "name": "users", 1457 + "schema": "", 1458 + "columns": { 1459 + "id": { 1460 + "name": "id", 1461 + "type": "text", 1462 + "primaryKey": true, 1463 + "notNull": true, 1464 + "default": "xata_id()" 1465 + }, 1466 + "did": { 1467 + "name": "did", 1468 + "type": "text", 1469 + "primaryKey": false, 1470 + "notNull": true 1471 + }, 1472 + "display_name": { 1473 + "name": "display_name", 1474 + "type": "text", 1475 + "primaryKey": false, 1476 + "notNull": false 1477 + }, 1478 + "handle": { 1479 + "name": "handle", 1480 + "type": "text", 1481 + "primaryKey": false, 1482 + "notNull": true 1483 + }, 1484 + "avatar": { 1485 + "name": "avatar", 1486 + "type": "text", 1487 + "primaryKey": false, 1488 + "notNull": false 1489 + }, 1490 + "created_at": { 1491 + "name": "created_at", 1492 + "type": "timestamp", 1493 + "primaryKey": false, 1494 + "notNull": true, 1495 + "default": "now()" 1496 + }, 1497 + "updated_at": { 1498 + "name": "updated_at", 1499 + "type": "timestamp", 1500 + "primaryKey": false, 1501 + "notNull": true, 1502 + "default": "now()" 1503 + } 1504 + }, 1505 + "indexes": {}, 1506 + "foreignKeys": {}, 1507 + "compositePrimaryKeys": {}, 1508 + "uniqueConstraints": { 1509 + "users_did_unique": { 1510 + "name": "users_did_unique", 1511 + "nullsNotDistinct": false, 1512 + "columns": [ 1513 + "did" 1514 + ] 1515 + }, 1516 + "users_handle_unique": { 1517 + "name": "users_handle_unique", 1518 + "nullsNotDistinct": false, 1519 + "columns": [ 1520 + "handle" 1521 + ] 1522 + } 1523 + }, 1524 + "policies": {}, 1525 + "checkConstraints": {}, 1526 + "isRLSEnabled": false 1527 + }, 1528 + "public.variables": { 1529 + "name": "variables", 1530 + "schema": "", 1531 + "columns": { 1532 + "id": { 1533 + "name": "id", 1534 + "type": "text", 1535 + "primaryKey": true, 1536 + "notNull": true, 1537 + "default": "variable_id()" 1538 + }, 1539 + "name": { 1540 + "name": "name", 1541 + "type": "text", 1542 + "primaryKey": false, 1543 + "notNull": true 1544 + }, 1545 + "value": { 1546 + "name": "value", 1547 + "type": "text", 1548 + "primaryKey": false, 1549 + "notNull": true 1550 + }, 1551 + "created_at": { 1552 + "name": "created_at", 1553 + "type": "timestamp", 1554 + "primaryKey": false, 1555 + "notNull": true, 1556 + "default": "now()" 1557 + }, 1558 + "updated_at": { 1559 + "name": "updated_at", 1560 + "type": "timestamp", 1561 + "primaryKey": false, 1562 + "notNull": true, 1563 + "default": "now()" 1564 + } 1565 + }, 1566 + "indexes": {}, 1567 + "foreignKeys": {}, 1568 + "compositePrimaryKeys": {}, 1569 + "uniqueConstraints": {}, 1570 + "policies": {}, 1571 + "checkConstraints": {}, 1572 + "isRLSEnabled": false 1573 + }, 1574 + "public.vercel_auth": { 1575 + "name": "vercel_auth", 1576 + "schema": "", 1577 + "columns": { 1578 + "id": { 1579 + "name": "id", 1580 + "type": "text", 1581 + "primaryKey": true, 1582 + "notNull": true, 1583 + "default": "xata_id()" 1584 + }, 1585 + "sandbox_id": { 1586 + "name": "sandbox_id", 1587 + "type": "text", 1588 + "primaryKey": false, 1589 + "notNull": true 1590 + }, 1591 + "user_id": { 1592 + "name": "user_id", 1593 + "type": "text", 1594 + "primaryKey": false, 1595 + "notNull": true 1596 + }, 1597 + "vercel_token": { 1598 + "name": "vercel_token", 1599 + "type": "text", 1600 + "primaryKey": false, 1601 + "notNull": true 1602 + }, 1603 + "created_at": { 1604 + "name": "created_at", 1605 + "type": "timestamp", 1606 + "primaryKey": false, 1607 + "notNull": true, 1608 + "default": "now()" 1609 + } 1610 + }, 1611 + "indexes": { 1612 + "unique_vercel_auth": { 1613 + "name": "unique_vercel_auth", 1614 + "columns": [ 1615 + { 1616 + "expression": "sandbox_id", 1617 + "isExpression": false, 1618 + "asc": true, 1619 + "nulls": "last" 1620 + }, 1621 + { 1622 + "expression": "user_id", 1623 + "isExpression": false, 1624 + "asc": true, 1625 + "nulls": "last" 1626 + } 1627 + ], 1628 + "isUnique": true, 1629 + "concurrently": false, 1630 + "method": "btree", 1631 + "with": {} 1632 + } 1633 + }, 1634 + "foreignKeys": { 1635 + "vercel_auth_sandbox_id_sandboxes_id_fk": { 1636 + "name": "vercel_auth_sandbox_id_sandboxes_id_fk", 1637 + "tableFrom": "vercel_auth", 1638 + "tableTo": "sandboxes", 1639 + "columnsFrom": [ 1640 + "sandbox_id" 1641 + ], 1642 + "columnsTo": [ 1643 + "id" 1644 + ], 1645 + "onDelete": "cascade", 1646 + "onUpdate": "no action" 1647 + }, 1648 + "vercel_auth_user_id_users_id_fk": { 1649 + "name": "vercel_auth_user_id_users_id_fk", 1650 + "tableFrom": "vercel_auth", 1651 + "tableTo": "users", 1652 + "columnsFrom": [ 1653 + "user_id" 1654 + ], 1655 + "columnsTo": [ 1656 + "id" 1657 + ], 1658 + "onDelete": "no action", 1659 + "onUpdate": "no action" 1660 + } 1661 + }, 1662 + "compositePrimaryKeys": {}, 1663 + "uniqueConstraints": {}, 1664 + "policies": {}, 1665 + "checkConstraints": {}, 1666 + "isRLSEnabled": false 1667 + }, 1668 + "public.volumes": { 1669 + "name": "volumes", 1670 + "schema": "", 1671 + "columns": { 1672 + "id": { 1673 + "name": "id", 1674 + "type": "text", 1675 + "primaryKey": true, 1676 + "notNull": true, 1677 + "default": "volume_id()" 1678 + }, 1679 + "slug": { 1680 + "name": "slug", 1681 + "type": "text", 1682 + "primaryKey": false, 1683 + "notNull": true 1684 + }, 1685 + "size": { 1686 + "name": "size", 1687 + "type": "integer", 1688 + "primaryKey": false, 1689 + "notNull": true 1690 + }, 1691 + "size_unit": { 1692 + "name": "size_unit", 1693 + "type": "text", 1694 + "primaryKey": false, 1695 + "notNull": true 1696 + }, 1697 + "created_at": { 1698 + "name": "created_at", 1699 + "type": "timestamp", 1700 + "primaryKey": false, 1701 + "notNull": true, 1702 + "default": "now()" 1703 + }, 1704 + "updated_at": { 1705 + "name": "updated_at", 1706 + "type": "timestamp", 1707 + "primaryKey": false, 1708 + "notNull": true, 1709 + "default": "now()" 1710 + } 1711 + }, 1712 + "indexes": {}, 1713 + "foreignKeys": {}, 1714 + "compositePrimaryKeys": {}, 1715 + "uniqueConstraints": { 1716 + "volumes_slug_unique": { 1717 + "name": "volumes_slug_unique", 1718 + "nullsNotDistinct": false, 1719 + "columns": [ 1720 + "slug" 1721 + ] 1722 + } 1723 + }, 1724 + "policies": {}, 1725 + "checkConstraints": {}, 1726 + "isRLSEnabled": false 1727 + }, 1728 + "public.integrations": { 1729 + "name": "integrations", 1730 + "schema": "", 1731 + "columns": { 1732 + "id": { 1733 + "name": "id", 1734 + "type": "text", 1735 + "primaryKey": true, 1736 + "notNull": true, 1737 + "default": "xata_id()" 1738 + }, 1739 + "sandbox_id": { 1740 + "name": "sandbox_id", 1741 + "type": "text", 1742 + "primaryKey": false, 1743 + "notNull": true 1744 + }, 1745 + "name": { 1746 + "name": "name", 1747 + "type": "text", 1748 + "primaryKey": false, 1749 + "notNull": true 1750 + }, 1751 + "description": { 1752 + "name": "description", 1753 + "type": "text", 1754 + "primaryKey": false, 1755 + "notNull": false 1756 + }, 1757 + "webhook_url": { 1758 + "name": "webhook_url", 1759 + "type": "text", 1760 + "primaryKey": false, 1761 + "notNull": true 1762 + }, 1763 + "created_at": { 1764 + "name": "created_at", 1765 + "type": "timestamp", 1766 + "primaryKey": false, 1767 + "notNull": true, 1768 + "default": "now()" 1769 + } 1770 + }, 1771 + "indexes": { 1772 + "unique_sandbox_integration": { 1773 + "name": "unique_sandbox_integration", 1774 + "columns": [ 1775 + { 1776 + "expression": "sandbox_id", 1777 + "isExpression": false, 1778 + "asc": true, 1779 + "nulls": "last" 1780 + }, 1781 + { 1782 + "expression": "name", 1783 + "isExpression": false, 1784 + "asc": true, 1785 + "nulls": "last" 1786 + } 1787 + ], 1788 + "isUnique": true, 1789 + "concurrently": false, 1790 + "method": "btree", 1791 + "with": {} 1792 + } 1793 + }, 1794 + "foreignKeys": { 1795 + "integrations_sandbox_id_sandboxes_id_fk": { 1796 + "name": "integrations_sandbox_id_sandboxes_id_fk", 1797 + "tableFrom": "integrations", 1798 + "tableTo": "sandboxes", 1799 + "columnsFrom": [ 1800 + "sandbox_id" 1801 + ], 1802 + "columnsTo": [ 1803 + "id" 1804 + ], 1805 + "onDelete": "cascade", 1806 + "onUpdate": "no action" 1807 + } 1808 + }, 1809 + "compositePrimaryKeys": {}, 1810 + "uniqueConstraints": {}, 1811 + "policies": {}, 1812 + "checkConstraints": {}, 1813 + "isRLSEnabled": false 1814 + } 1815 + }, 1816 + "enums": {}, 1817 + "schemas": {}, 1818 + "sequences": {}, 1819 + "roles": {}, 1820 + "policies": {}, 1821 + "views": {}, 1822 + "_meta": { 1823 + "columns": {}, 1824 + "schemas": {}, 1825 + "tables": {} 1826 + } 1827 + }
+7
apps/cf-sandbox/drizzle/meta/_journal.json
··· 253 253 "when": 1774759561873, 254 254 "tag": "0035_slim_jack_power", 255 255 "breakpoints": true 256 + }, 257 + { 258 + "idx": 36, 259 + "version": "7", 260 + "when": 1774776863772, 261 + "tag": "0036_fine_weapon_omega", 262 + "breakpoints": true 256 263 } 257 264 ] 258 265 }
+27
apps/cf-sandbox/src/schema/daytona-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const daytonaAuth = pgTable( 7 + "daytona_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + apiKey: text("api_key").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_daytona_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDaytonaAuth = InferSelectModel<typeof daytonaAuth>; 25 + export type InsertDaytonaAuth = InferInsertModel<typeof daytonaAuth>; 26 + 27 + export default daytonaAuth;
+27
apps/cf-sandbox/src/schema/deno-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const denoAuth = pgTable( 7 + "deno_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + deployToken: text("deploy_token").notNull(), 16 + userId: text("user_id") 17 + .notNull() 18 + .references(() => users.id), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_deno_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDenoAuth = InferSelectModel<typeof denoAuth>; 25 + export type InsertDenoAuth = InferInsertModel<typeof denoAuth>; 26 + 27 + export default denoAuth;
+8
apps/cf-sandbox/src/schema/index.ts
··· 13 13 import sshKeys from "./ssh-keys"; 14 14 import sandboxPorts from "./sandbox-ports"; 15 15 import services from "./services"; 16 + import daytonaAuth from "./daytona-auth"; 17 + import denoAuth from "./deno-auth"; 18 + import spriteAuth from "./sprite-auth"; 19 + import vercelAuth from "./vercel-auth"; 16 20 17 21 export { 18 22 sandboxes, ··· 30 34 sshKeys, 31 35 sandboxPorts, 32 36 services, 37 + daytonaAuth, 38 + denoAuth, 39 + spriteAuth, 40 + vercelAuth, 33 41 };
+27
apps/cf-sandbox/src/schema/sprite-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const spriteAuth = pgTable( 7 + "sprite_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + spriteToken: text("sprite_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_sprite_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectSpriteAuth = InferSelectModel<typeof spriteAuth>; 25 + export type InsertSpriteAuth = InferInsertModel<typeof spriteAuth>; 26 + 27 + export default spriteAuth;
+27
apps/cf-sandbox/src/schema/vercel-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes"; 4 + import users from "./users"; 5 + 6 + const vercelAuth = pgTable( 7 + "vercel_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + vercelToken: text("vercel_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_vercel_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectVercelAuth = InferSelectModel<typeof vercelAuth>; 25 + export type InsertVercelAuth = InferInsertModel<typeof vercelAuth>; 26 + 27 + export default vercelAuth;
+27
apps/sandbox/src/schema/daytona-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes.ts"; 4 + import users from "./users.ts"; 5 + 6 + const daytonaAuth = pgTable( 7 + "daytona_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + apiKey: text("api_key").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_daytona_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDaytonaAuth = InferSelectModel<typeof daytonaAuth>; 25 + export type InsertDaytonaAuth = InferInsertModel<typeof daytonaAuth>; 26 + 27 + export default daytonaAuth;
+27
apps/sandbox/src/schema/deno-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes.ts"; 4 + import users from "./users.ts"; 5 + 6 + const denoAuth = pgTable( 7 + "deno_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + deployToken: text("deploy_token").notNull(), 16 + userId: text("user_id") 17 + .notNull() 18 + .references(() => users.id), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_deno_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectDenoAuth = InferSelectModel<typeof denoAuth>; 25 + export type InsertDenoAuth = InferInsertModel<typeof denoAuth>; 26 + 27 + export default denoAuth;
+8
apps/sandbox/src/schema/mod.ts
··· 13 13 import tailscaleAuthKeys from "./tailscale-auth-keys.ts"; 14 14 import sandboxPorts from "./sandbox-ports.ts"; 15 15 import services from "./services.ts"; 16 + import daytonaAuth from "./daytona-auth.ts"; 17 + import denoAuth from "./deno-auth.ts"; 18 + import spriteAuth from "./sprite-auth.ts"; 19 + import vercelAuth from "./vercel-auth.ts"; 16 20 17 21 export { 18 22 sandboxes, ··· 30 34 tailscaleAuthKeys, 31 35 sandboxPorts, 32 36 services, 37 + daytonaAuth, 38 + denoAuth, 39 + spriteAuth, 40 + vercelAuth, 33 41 };
+27
apps/sandbox/src/schema/sprite-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes.ts"; 4 + import users from "./users.ts"; 5 + 6 + const spriteAuth = pgTable( 7 + "sprite_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + spriteToken: text("sprite_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_sprite_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectSpriteAuth = InferSelectModel<typeof spriteAuth>; 25 + export type InsertSpriteAuth = InferInsertModel<typeof spriteAuth>; 26 + 27 + export default spriteAuth;
+27
apps/sandbox/src/schema/vercel-auth.ts
··· 1 + import { type InferInsertModel, type InferSelectModel, sql } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core"; 3 + import sandboxes from "./sandboxes.ts"; 4 + import users from "./users.ts"; 5 + 6 + const vercelAuth = pgTable( 7 + "vercel_auth", 8 + { 9 + id: text("id") 10 + .primaryKey() 11 + .default(sql`xata_id()`), 12 + sandboxId: text("sandbox_id") 13 + .notNull() 14 + .references(() => sandboxes.id, { onDelete: "cascade" }), 15 + userId: text("user_id") 16 + .notNull() 17 + .references(() => users.id), 18 + vercelToken: text("vercel_token").notNull(), 19 + createdAt: timestamp("created_at").defaultNow().notNull(), 20 + }, 21 + (t) => [uniqueIndex("unique_vercel_auth").on(t.sandboxId, t.userId)], 22 + ); 23 + 24 + export type SelectVercelAuth = InferSelectModel<typeof vercelAuth>; 25 + export type InsertVercelAuth = InferInsertModel<typeof vercelAuth>; 26 + 27 + export default vercelAuth;