Openstatus www.openstatus.dev

๐Ÿ’Œ subscriber add not null to page id (#520)

* ๐Ÿ’Œ subscriber

* ๐Ÿ’Œ subscriber

authored by

Thibault Le Ouay and committed by
GitHub
17857191 b4a03b65

+1278 -3
+1
apps/server/src/v1/page.ts
··· 114 114 const _statusReportSubscriberUpdate = await db 115 115 .insert(pageSubscriber) 116 116 .values({ 117 + pageId: _page.id, 117 118 email: input.email, 118 119 token, 119 120 expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
+1
apps/web/src/app/status-page/[domain]/subscribe/route.ts
··· 52 52 await db 53 53 .insert(pageSubscriber) 54 54 .values({ 55 + pageId: pageData.id, 55 56 email: result.email, 56 57 token, 57 58 expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
+14
packages/db/drizzle/0014_adorable_skaar.sql
··· 1 + DROP TABLE IF EXISTS `page_subscriber`; 2 + --> statement-breakpoint 3 + 4 + CREATE TABLE `page_subscriber` ( 5 + `id` integer PRIMARY KEY NOT NULL, 6 + `email` text NOT NULL, 7 + `page_id` integer NOT NULL, 8 + `token` text, 9 + `accepted_at` integer, 10 + `expires_at` integer, 11 + `created_at` integer DEFAULT (strftime('%s', 'now')), 12 + `updated_at` integer DEFAULT (strftime('%s', 'now')), 13 + FOREIGN KEY (`page_id`) REFERENCES `page`(`id`) ON UPDATE no action ON DELETE no action 14 + );
+1250
packages/db/drizzle/meta/0014_snapshot.json
··· 1 + { 2 + "version": "5", 3 + "dialect": "sqlite", 4 + "id": "4cc8ce9b-ed70-47c1-8218-2cbc02743563", 5 + "prevId": "5ac15aa5-4512-4f06-92e3-4410ce097034", 6 + "tables": { 7 + "status_report_to_monitors": { 8 + "name": "status_report_to_monitors", 9 + "columns": { 10 + "monitor_id": { 11 + "name": "monitor_id", 12 + "type": "integer", 13 + "primaryKey": false, 14 + "notNull": true, 15 + "autoincrement": false 16 + }, 17 + "status_report_id": { 18 + "name": "status_report_id", 19 + "type": "integer", 20 + "primaryKey": false, 21 + "notNull": true, 22 + "autoincrement": false 23 + } 24 + }, 25 + "indexes": {}, 26 + "foreignKeys": { 27 + "status_report_to_monitors_monitor_id_monitor_id_fk": { 28 + "name": "status_report_to_monitors_monitor_id_monitor_id_fk", 29 + "tableFrom": "status_report_to_monitors", 30 + "tableTo": "monitor", 31 + "columnsFrom": [ 32 + "monitor_id" 33 + ], 34 + "columnsTo": [ 35 + "id" 36 + ], 37 + "onDelete": "cascade", 38 + "onUpdate": "no action" 39 + }, 40 + "status_report_to_monitors_status_report_id_status_report_id_fk": { 41 + "name": "status_report_to_monitors_status_report_id_status_report_id_fk", 42 + "tableFrom": "status_report_to_monitors", 43 + "tableTo": "status_report", 44 + "columnsFrom": [ 45 + "status_report_id" 46 + ], 47 + "columnsTo": [ 48 + "id" 49 + ], 50 + "onDelete": "cascade", 51 + "onUpdate": "no action" 52 + } 53 + }, 54 + "compositePrimaryKeys": { 55 + "status_report_to_monitors_monitor_id_status_report_id_pk": { 56 + "columns": [ 57 + "monitor_id", 58 + "status_report_id" 59 + ] 60 + } 61 + }, 62 + "uniqueConstraints": {} 63 + }, 64 + "status_reports_to_pages": { 65 + "name": "status_reports_to_pages", 66 + "columns": { 67 + "page_id": { 68 + "name": "page_id", 69 + "type": "integer", 70 + "primaryKey": false, 71 + "notNull": true, 72 + "autoincrement": false 73 + }, 74 + "status_report_id": { 75 + "name": "status_report_id", 76 + "type": "integer", 77 + "primaryKey": false, 78 + "notNull": true, 79 + "autoincrement": false 80 + } 81 + }, 82 + "indexes": {}, 83 + "foreignKeys": { 84 + "status_reports_to_pages_page_id_page_id_fk": { 85 + "name": "status_reports_to_pages_page_id_page_id_fk", 86 + "tableFrom": "status_reports_to_pages", 87 + "tableTo": "page", 88 + "columnsFrom": [ 89 + "page_id" 90 + ], 91 + "columnsTo": [ 92 + "id" 93 + ], 94 + "onDelete": "cascade", 95 + "onUpdate": "no action" 96 + }, 97 + "status_reports_to_pages_status_report_id_status_report_id_fk": { 98 + "name": "status_reports_to_pages_status_report_id_status_report_id_fk", 99 + "tableFrom": "status_reports_to_pages", 100 + "tableTo": "status_report", 101 + "columnsFrom": [ 102 + "status_report_id" 103 + ], 104 + "columnsTo": [ 105 + "id" 106 + ], 107 + "onDelete": "cascade", 108 + "onUpdate": "no action" 109 + } 110 + }, 111 + "compositePrimaryKeys": { 112 + "status_reports_to_pages_page_id_status_report_id_pk": { 113 + "columns": [ 114 + "page_id", 115 + "status_report_id" 116 + ] 117 + } 118 + }, 119 + "uniqueConstraints": {} 120 + }, 121 + "status_report": { 122 + "name": "status_report", 123 + "columns": { 124 + "id": { 125 + "name": "id", 126 + "type": "integer", 127 + "primaryKey": true, 128 + "notNull": true, 129 + "autoincrement": false 130 + }, 131 + "status": { 132 + "name": "status", 133 + "type": "text", 134 + "primaryKey": false, 135 + "notNull": true, 136 + "autoincrement": false 137 + }, 138 + "title": { 139 + "name": "title", 140 + "type": "text(256)", 141 + "primaryKey": false, 142 + "notNull": true, 143 + "autoincrement": false 144 + }, 145 + "workspace_id": { 146 + "name": "workspace_id", 147 + "type": "integer", 148 + "primaryKey": false, 149 + "notNull": false, 150 + "autoincrement": false 151 + }, 152 + "created_at": { 153 + "name": "created_at", 154 + "type": "integer", 155 + "primaryKey": false, 156 + "notNull": false, 157 + "autoincrement": false, 158 + "default": "(strftime('%s', 'now'))" 159 + }, 160 + "updated_at": { 161 + "name": "updated_at", 162 + "type": "integer", 163 + "primaryKey": false, 164 + "notNull": false, 165 + "autoincrement": false, 166 + "default": "(strftime('%s', 'now'))" 167 + } 168 + }, 169 + "indexes": {}, 170 + "foreignKeys": { 171 + "status_report_workspace_id_workspace_id_fk": { 172 + "name": "status_report_workspace_id_workspace_id_fk", 173 + "tableFrom": "status_report", 174 + "tableTo": "workspace", 175 + "columnsFrom": [ 176 + "workspace_id" 177 + ], 178 + "columnsTo": [ 179 + "id" 180 + ], 181 + "onDelete": "no action", 182 + "onUpdate": "no action" 183 + } 184 + }, 185 + "compositePrimaryKeys": {}, 186 + "uniqueConstraints": {} 187 + }, 188 + "status_report_update": { 189 + "name": "status_report_update", 190 + "columns": { 191 + "id": { 192 + "name": "id", 193 + "type": "integer", 194 + "primaryKey": true, 195 + "notNull": true, 196 + "autoincrement": false 197 + }, 198 + "status": { 199 + "name": "status", 200 + "type": "text(4)", 201 + "primaryKey": false, 202 + "notNull": true, 203 + "autoincrement": false 204 + }, 205 + "date": { 206 + "name": "date", 207 + "type": "integer", 208 + "primaryKey": false, 209 + "notNull": true, 210 + "autoincrement": false 211 + }, 212 + "message": { 213 + "name": "message", 214 + "type": "text", 215 + "primaryKey": false, 216 + "notNull": true, 217 + "autoincrement": false 218 + }, 219 + "status_report_id": { 220 + "name": "status_report_id", 221 + "type": "integer", 222 + "primaryKey": false, 223 + "notNull": true, 224 + "autoincrement": false 225 + }, 226 + "created_at": { 227 + "name": "created_at", 228 + "type": "integer", 229 + "primaryKey": false, 230 + "notNull": false, 231 + "autoincrement": false, 232 + "default": "(strftime('%s', 'now'))" 233 + }, 234 + "updated_at": { 235 + "name": "updated_at", 236 + "type": "integer", 237 + "primaryKey": false, 238 + "notNull": false, 239 + "autoincrement": false, 240 + "default": "(strftime('%s', 'now'))" 241 + } 242 + }, 243 + "indexes": {}, 244 + "foreignKeys": { 245 + "status_report_update_status_report_id_status_report_id_fk": { 246 + "name": "status_report_update_status_report_id_status_report_id_fk", 247 + "tableFrom": "status_report_update", 248 + "tableTo": "status_report", 249 + "columnsFrom": [ 250 + "status_report_id" 251 + ], 252 + "columnsTo": [ 253 + "id" 254 + ], 255 + "onDelete": "cascade", 256 + "onUpdate": "no action" 257 + } 258 + }, 259 + "compositePrimaryKeys": {}, 260 + "uniqueConstraints": {} 261 + }, 262 + "integration": { 263 + "name": "integration", 264 + "columns": { 265 + "id": { 266 + "name": "id", 267 + "type": "integer", 268 + "primaryKey": true, 269 + "notNull": true, 270 + "autoincrement": false 271 + }, 272 + "name": { 273 + "name": "name", 274 + "type": "text(256)", 275 + "primaryKey": false, 276 + "notNull": true, 277 + "autoincrement": false 278 + }, 279 + "workspace_id": { 280 + "name": "workspace_id", 281 + "type": "integer", 282 + "primaryKey": false, 283 + "notNull": false, 284 + "autoincrement": false 285 + }, 286 + "credential": { 287 + "name": "credential", 288 + "type": "text", 289 + "primaryKey": false, 290 + "notNull": false, 291 + "autoincrement": false 292 + }, 293 + "external_id": { 294 + "name": "external_id", 295 + "type": "text", 296 + "primaryKey": false, 297 + "notNull": true, 298 + "autoincrement": false 299 + }, 300 + "created_at": { 301 + "name": "created_at", 302 + "type": "integer", 303 + "primaryKey": false, 304 + "notNull": false, 305 + "autoincrement": false, 306 + "default": "(strftime('%s', 'now'))" 307 + }, 308 + "updated_at": { 309 + "name": "updated_at", 310 + "type": "integer", 311 + "primaryKey": false, 312 + "notNull": false, 313 + "autoincrement": false, 314 + "default": "(strftime('%s', 'now'))" 315 + }, 316 + "data": { 317 + "name": "data", 318 + "type": "text", 319 + "primaryKey": false, 320 + "notNull": true, 321 + "autoincrement": false 322 + } 323 + }, 324 + "indexes": {}, 325 + "foreignKeys": { 326 + "integration_workspace_id_workspace_id_fk": { 327 + "name": "integration_workspace_id_workspace_id_fk", 328 + "tableFrom": "integration", 329 + "tableTo": "workspace", 330 + "columnsFrom": [ 331 + "workspace_id" 332 + ], 333 + "columnsTo": [ 334 + "id" 335 + ], 336 + "onDelete": "no action", 337 + "onUpdate": "no action" 338 + } 339 + }, 340 + "compositePrimaryKeys": {}, 341 + "uniqueConstraints": {} 342 + }, 343 + "page": { 344 + "name": "page", 345 + "columns": { 346 + "id": { 347 + "name": "id", 348 + "type": "integer", 349 + "primaryKey": true, 350 + "notNull": true, 351 + "autoincrement": false 352 + }, 353 + "workspace_id": { 354 + "name": "workspace_id", 355 + "type": "integer", 356 + "primaryKey": false, 357 + "notNull": true, 358 + "autoincrement": false 359 + }, 360 + "title": { 361 + "name": "title", 362 + "type": "text", 363 + "primaryKey": false, 364 + "notNull": true, 365 + "autoincrement": false 366 + }, 367 + "description": { 368 + "name": "description", 369 + "type": "text", 370 + "primaryKey": false, 371 + "notNull": true, 372 + "autoincrement": false 373 + }, 374 + "icon": { 375 + "name": "icon", 376 + "type": "text(256)", 377 + "primaryKey": false, 378 + "notNull": false, 379 + "autoincrement": false, 380 + "default": "''" 381 + }, 382 + "slug": { 383 + "name": "slug", 384 + "type": "text(256)", 385 + "primaryKey": false, 386 + "notNull": true, 387 + "autoincrement": false 388 + }, 389 + "custom_domain": { 390 + "name": "custom_domain", 391 + "type": "text(256)", 392 + "primaryKey": false, 393 + "notNull": true, 394 + "autoincrement": false 395 + }, 396 + "published": { 397 + "name": "published", 398 + "type": "integer", 399 + "primaryKey": false, 400 + "notNull": false, 401 + "autoincrement": false, 402 + "default": false 403 + }, 404 + "created_at": { 405 + "name": "created_at", 406 + "type": "integer", 407 + "primaryKey": false, 408 + "notNull": false, 409 + "autoincrement": false, 410 + "default": "(strftime('%s', 'now'))" 411 + }, 412 + "updated_at": { 413 + "name": "updated_at", 414 + "type": "integer", 415 + "primaryKey": false, 416 + "notNull": false, 417 + "autoincrement": false, 418 + "default": "(strftime('%s', 'now'))" 419 + } 420 + }, 421 + "indexes": { 422 + "page_slug_unique": { 423 + "name": "page_slug_unique", 424 + "columns": [ 425 + "slug" 426 + ], 427 + "isUnique": true 428 + } 429 + }, 430 + "foreignKeys": { 431 + "page_workspace_id_workspace_id_fk": { 432 + "name": "page_workspace_id_workspace_id_fk", 433 + "tableFrom": "page", 434 + "tableTo": "workspace", 435 + "columnsFrom": [ 436 + "workspace_id" 437 + ], 438 + "columnsTo": [ 439 + "id" 440 + ], 441 + "onDelete": "cascade", 442 + "onUpdate": "no action" 443 + } 444 + }, 445 + "compositePrimaryKeys": {}, 446 + "uniqueConstraints": {} 447 + }, 448 + "monitor": { 449 + "name": "monitor", 450 + "columns": { 451 + "id": { 452 + "name": "id", 453 + "type": "integer", 454 + "primaryKey": true, 455 + "notNull": true, 456 + "autoincrement": false 457 + }, 458 + "job_type": { 459 + "name": "job_type", 460 + "type": "text", 461 + "primaryKey": false, 462 + "notNull": true, 463 + "autoincrement": false, 464 + "default": "'other'" 465 + }, 466 + "periodicity": { 467 + "name": "periodicity", 468 + "type": "text", 469 + "primaryKey": false, 470 + "notNull": true, 471 + "autoincrement": false, 472 + "default": "'other'" 473 + }, 474 + "status": { 475 + "name": "status", 476 + "type": "text", 477 + "primaryKey": false, 478 + "notNull": true, 479 + "autoincrement": false, 480 + "default": "'active'" 481 + }, 482 + "active": { 483 + "name": "active", 484 + "type": "integer", 485 + "primaryKey": false, 486 + "notNull": false, 487 + "autoincrement": false, 488 + "default": false 489 + }, 490 + "regions": { 491 + "name": "regions", 492 + "type": "text", 493 + "primaryKey": false, 494 + "notNull": true, 495 + "autoincrement": false, 496 + "default": "''" 497 + }, 498 + "url": { 499 + "name": "url", 500 + "type": "text(2048)", 501 + "primaryKey": false, 502 + "notNull": true, 503 + "autoincrement": false 504 + }, 505 + "name": { 506 + "name": "name", 507 + "type": "text(256)", 508 + "primaryKey": false, 509 + "notNull": true, 510 + "autoincrement": false, 511 + "default": "''" 512 + }, 513 + "description": { 514 + "name": "description", 515 + "type": "text", 516 + "primaryKey": false, 517 + "notNull": true, 518 + "autoincrement": false, 519 + "default": "''" 520 + }, 521 + "headers": { 522 + "name": "headers", 523 + "type": "text", 524 + "primaryKey": false, 525 + "notNull": false, 526 + "autoincrement": false, 527 + "default": "''" 528 + }, 529 + "body": { 530 + "name": "body", 531 + "type": "text", 532 + "primaryKey": false, 533 + "notNull": false, 534 + "autoincrement": false, 535 + "default": "''" 536 + }, 537 + "method": { 538 + "name": "method", 539 + "type": "text", 540 + "primaryKey": false, 541 + "notNull": false, 542 + "autoincrement": false, 543 + "default": "'GET'" 544 + }, 545 + "workspace_id": { 546 + "name": "workspace_id", 547 + "type": "integer", 548 + "primaryKey": false, 549 + "notNull": false, 550 + "autoincrement": false 551 + }, 552 + "created_at": { 553 + "name": "created_at", 554 + "type": "integer", 555 + "primaryKey": false, 556 + "notNull": false, 557 + "autoincrement": false, 558 + "default": "(strftime('%s', 'now'))" 559 + }, 560 + "updated_at": { 561 + "name": "updated_at", 562 + "type": "integer", 563 + "primaryKey": false, 564 + "notNull": false, 565 + "autoincrement": false, 566 + "default": "(strftime('%s', 'now'))" 567 + } 568 + }, 569 + "indexes": {}, 570 + "foreignKeys": { 571 + "monitor_workspace_id_workspace_id_fk": { 572 + "name": "monitor_workspace_id_workspace_id_fk", 573 + "tableFrom": "monitor", 574 + "tableTo": "workspace", 575 + "columnsFrom": [ 576 + "workspace_id" 577 + ], 578 + "columnsTo": [ 579 + "id" 580 + ], 581 + "onDelete": "no action", 582 + "onUpdate": "no action" 583 + } 584 + }, 585 + "compositePrimaryKeys": {}, 586 + "uniqueConstraints": {} 587 + }, 588 + "monitors_to_pages": { 589 + "name": "monitors_to_pages", 590 + "columns": { 591 + "monitor_id": { 592 + "name": "monitor_id", 593 + "type": "integer", 594 + "primaryKey": false, 595 + "notNull": true, 596 + "autoincrement": false 597 + }, 598 + "page_id": { 599 + "name": "page_id", 600 + "type": "integer", 601 + "primaryKey": false, 602 + "notNull": true, 603 + "autoincrement": false 604 + } 605 + }, 606 + "indexes": {}, 607 + "foreignKeys": { 608 + "monitors_to_pages_monitor_id_monitor_id_fk": { 609 + "name": "monitors_to_pages_monitor_id_monitor_id_fk", 610 + "tableFrom": "monitors_to_pages", 611 + "tableTo": "monitor", 612 + "columnsFrom": [ 613 + "monitor_id" 614 + ], 615 + "columnsTo": [ 616 + "id" 617 + ], 618 + "onDelete": "cascade", 619 + "onUpdate": "no action" 620 + }, 621 + "monitors_to_pages_page_id_page_id_fk": { 622 + "name": "monitors_to_pages_page_id_page_id_fk", 623 + "tableFrom": "monitors_to_pages", 624 + "tableTo": "page", 625 + "columnsFrom": [ 626 + "page_id" 627 + ], 628 + "columnsTo": [ 629 + "id" 630 + ], 631 + "onDelete": "cascade", 632 + "onUpdate": "no action" 633 + } 634 + }, 635 + "compositePrimaryKeys": { 636 + "monitors_to_pages_monitor_id_page_id_pk": { 637 + "columns": [ 638 + "monitor_id", 639 + "page_id" 640 + ] 641 + } 642 + }, 643 + "uniqueConstraints": {} 644 + }, 645 + "user": { 646 + "name": "user", 647 + "columns": { 648 + "id": { 649 + "name": "id", 650 + "type": "integer", 651 + "primaryKey": true, 652 + "notNull": true, 653 + "autoincrement": false 654 + }, 655 + "tenant_id": { 656 + "name": "tenant_id", 657 + "type": "text(256)", 658 + "primaryKey": false, 659 + "notNull": false, 660 + "autoincrement": false 661 + }, 662 + "first_name": { 663 + "name": "first_name", 664 + "type": "text", 665 + "primaryKey": false, 666 + "notNull": false, 667 + "autoincrement": false, 668 + "default": "''" 669 + }, 670 + "last_name": { 671 + "name": "last_name", 672 + "type": "text", 673 + "primaryKey": false, 674 + "notNull": false, 675 + "autoincrement": false, 676 + "default": "''" 677 + }, 678 + "email": { 679 + "name": "email", 680 + "type": "text", 681 + "primaryKey": false, 682 + "notNull": false, 683 + "autoincrement": false, 684 + "default": "''" 685 + }, 686 + "photo_url": { 687 + "name": "photo_url", 688 + "type": "text", 689 + "primaryKey": false, 690 + "notNull": false, 691 + "autoincrement": false, 692 + "default": "''" 693 + }, 694 + "created_at": { 695 + "name": "created_at", 696 + "type": "integer", 697 + "primaryKey": false, 698 + "notNull": false, 699 + "autoincrement": false, 700 + "default": "(strftime('%s', 'now'))" 701 + }, 702 + "updated_at": { 703 + "name": "updated_at", 704 + "type": "integer", 705 + "primaryKey": false, 706 + "notNull": false, 707 + "autoincrement": false, 708 + "default": "(strftime('%s', 'now'))" 709 + } 710 + }, 711 + "indexes": { 712 + "user_tenant_id_unique": { 713 + "name": "user_tenant_id_unique", 714 + "columns": [ 715 + "tenant_id" 716 + ], 717 + "isUnique": true 718 + } 719 + }, 720 + "foreignKeys": {}, 721 + "compositePrimaryKeys": {}, 722 + "uniqueConstraints": {} 723 + }, 724 + "users_to_workspaces": { 725 + "name": "users_to_workspaces", 726 + "columns": { 727 + "user_id": { 728 + "name": "user_id", 729 + "type": "integer", 730 + "primaryKey": false, 731 + "notNull": true, 732 + "autoincrement": false 733 + }, 734 + "workspace_id": { 735 + "name": "workspace_id", 736 + "type": "integer", 737 + "primaryKey": false, 738 + "notNull": true, 739 + "autoincrement": false 740 + }, 741 + "role": { 742 + "name": "role", 743 + "type": "text", 744 + "primaryKey": false, 745 + "notNull": true, 746 + "autoincrement": false, 747 + "default": "'member'" 748 + } 749 + }, 750 + "indexes": {}, 751 + "foreignKeys": { 752 + "users_to_workspaces_user_id_user_id_fk": { 753 + "name": "users_to_workspaces_user_id_user_id_fk", 754 + "tableFrom": "users_to_workspaces", 755 + "tableTo": "user", 756 + "columnsFrom": [ 757 + "user_id" 758 + ], 759 + "columnsTo": [ 760 + "id" 761 + ], 762 + "onDelete": "no action", 763 + "onUpdate": "no action" 764 + }, 765 + "users_to_workspaces_workspace_id_workspace_id_fk": { 766 + "name": "users_to_workspaces_workspace_id_workspace_id_fk", 767 + "tableFrom": "users_to_workspaces", 768 + "tableTo": "workspace", 769 + "columnsFrom": [ 770 + "workspace_id" 771 + ], 772 + "columnsTo": [ 773 + "id" 774 + ], 775 + "onDelete": "no action", 776 + "onUpdate": "no action" 777 + } 778 + }, 779 + "compositePrimaryKeys": { 780 + "users_to_workspaces_user_id_workspace_id_pk": { 781 + "columns": [ 782 + "user_id", 783 + "workspace_id" 784 + ] 785 + } 786 + }, 787 + "uniqueConstraints": {} 788 + }, 789 + "page_subscriber": { 790 + "name": "page_subscriber", 791 + "columns": { 792 + "id": { 793 + "name": "id", 794 + "type": "integer", 795 + "primaryKey": true, 796 + "notNull": true, 797 + "autoincrement": false 798 + }, 799 + "email": { 800 + "name": "email", 801 + "type": "text", 802 + "primaryKey": false, 803 + "notNull": true, 804 + "autoincrement": false 805 + }, 806 + "page_id": { 807 + "name": "page_id", 808 + "type": "integer", 809 + "primaryKey": false, 810 + "notNull": true, 811 + "autoincrement": false 812 + }, 813 + "token": { 814 + "name": "token", 815 + "type": "text", 816 + "primaryKey": false, 817 + "notNull": false, 818 + "autoincrement": false 819 + }, 820 + "accepted_at": { 821 + "name": "accepted_at", 822 + "type": "integer", 823 + "primaryKey": false, 824 + "notNull": false, 825 + "autoincrement": false 826 + }, 827 + "expires_at": { 828 + "name": "expires_at", 829 + "type": "integer", 830 + "primaryKey": false, 831 + "notNull": false, 832 + "autoincrement": false 833 + }, 834 + "created_at": { 835 + "name": "created_at", 836 + "type": "integer", 837 + "primaryKey": false, 838 + "notNull": false, 839 + "autoincrement": false, 840 + "default": "(strftime('%s', 'now'))" 841 + }, 842 + "updated_at": { 843 + "name": "updated_at", 844 + "type": "integer", 845 + "primaryKey": false, 846 + "notNull": false, 847 + "autoincrement": false, 848 + "default": "(strftime('%s', 'now'))" 849 + } 850 + }, 851 + "indexes": {}, 852 + "foreignKeys": { 853 + "page_subscriber_page_id_page_id_fk": { 854 + "name": "page_subscriber_page_id_page_id_fk", 855 + "tableFrom": "page_subscriber", 856 + "tableTo": "page", 857 + "columnsFrom": [ 858 + "page_id" 859 + ], 860 + "columnsTo": [ 861 + "id" 862 + ], 863 + "onDelete": "no action", 864 + "onUpdate": "no action" 865 + } 866 + }, 867 + "compositePrimaryKeys": {}, 868 + "uniqueConstraints": {} 869 + }, 870 + "workspace": { 871 + "name": "workspace", 872 + "columns": { 873 + "id": { 874 + "name": "id", 875 + "type": "integer", 876 + "primaryKey": true, 877 + "notNull": true, 878 + "autoincrement": false 879 + }, 880 + "slug": { 881 + "name": "slug", 882 + "type": "text", 883 + "primaryKey": false, 884 + "notNull": true, 885 + "autoincrement": false 886 + }, 887 + "name": { 888 + "name": "name", 889 + "type": "text", 890 + "primaryKey": false, 891 + "notNull": false, 892 + "autoincrement": false 893 + }, 894 + "stripe_id": { 895 + "name": "stripe_id", 896 + "type": "text(256)", 897 + "primaryKey": false, 898 + "notNull": false, 899 + "autoincrement": false 900 + }, 901 + "subscription_id": { 902 + "name": "subscription_id", 903 + "type": "text", 904 + "primaryKey": false, 905 + "notNull": false, 906 + "autoincrement": false 907 + }, 908 + "plan": { 909 + "name": "plan", 910 + "type": "text", 911 + "primaryKey": false, 912 + "notNull": false, 913 + "autoincrement": false 914 + }, 915 + "ends_at": { 916 + "name": "ends_at", 917 + "type": "integer", 918 + "primaryKey": false, 919 + "notNull": false, 920 + "autoincrement": false 921 + }, 922 + "paid_until": { 923 + "name": "paid_until", 924 + "type": "integer", 925 + "primaryKey": false, 926 + "notNull": false, 927 + "autoincrement": false 928 + }, 929 + "created_at": { 930 + "name": "created_at", 931 + "type": "integer", 932 + "primaryKey": false, 933 + "notNull": false, 934 + "autoincrement": false, 935 + "default": "(strftime('%s', 'now'))" 936 + }, 937 + "updated_at": { 938 + "name": "updated_at", 939 + "type": "integer", 940 + "primaryKey": false, 941 + "notNull": false, 942 + "autoincrement": false, 943 + "default": "(strftime('%s', 'now'))" 944 + } 945 + }, 946 + "indexes": { 947 + "workspace_slug_unique": { 948 + "name": "workspace_slug_unique", 949 + "columns": [ 950 + "slug" 951 + ], 952 + "isUnique": true 953 + }, 954 + "workspace_stripe_id_unique": { 955 + "name": "workspace_stripe_id_unique", 956 + "columns": [ 957 + "stripe_id" 958 + ], 959 + "isUnique": true 960 + } 961 + }, 962 + "foreignKeys": {}, 963 + "compositePrimaryKeys": {}, 964 + "uniqueConstraints": {} 965 + }, 966 + "notification": { 967 + "name": "notification", 968 + "columns": { 969 + "id": { 970 + "name": "id", 971 + "type": "integer", 972 + "primaryKey": true, 973 + "notNull": true, 974 + "autoincrement": false 975 + }, 976 + "name": { 977 + "name": "name", 978 + "type": "text", 979 + "primaryKey": false, 980 + "notNull": true, 981 + "autoincrement": false 982 + }, 983 + "provider": { 984 + "name": "provider", 985 + "type": "text", 986 + "primaryKey": false, 987 + "notNull": true, 988 + "autoincrement": false 989 + }, 990 + "data": { 991 + "name": "data", 992 + "type": "text", 993 + "primaryKey": false, 994 + "notNull": false, 995 + "autoincrement": false, 996 + "default": "'{}'" 997 + }, 998 + "workspace_id": { 999 + "name": "workspace_id", 1000 + "type": "integer", 1001 + "primaryKey": false, 1002 + "notNull": false, 1003 + "autoincrement": false 1004 + }, 1005 + "created_at": { 1006 + "name": "created_at", 1007 + "type": "integer", 1008 + "primaryKey": false, 1009 + "notNull": false, 1010 + "autoincrement": false, 1011 + "default": "(strftime('%s', 'now'))" 1012 + }, 1013 + "updated_at": { 1014 + "name": "updated_at", 1015 + "type": "integer", 1016 + "primaryKey": false, 1017 + "notNull": false, 1018 + "autoincrement": false, 1019 + "default": "(strftime('%s', 'now'))" 1020 + } 1021 + }, 1022 + "indexes": {}, 1023 + "foreignKeys": { 1024 + "notification_workspace_id_workspace_id_fk": { 1025 + "name": "notification_workspace_id_workspace_id_fk", 1026 + "tableFrom": "notification", 1027 + "tableTo": "workspace", 1028 + "columnsFrom": [ 1029 + "workspace_id" 1030 + ], 1031 + "columnsTo": [ 1032 + "id" 1033 + ], 1034 + "onDelete": "no action", 1035 + "onUpdate": "no action" 1036 + } 1037 + }, 1038 + "compositePrimaryKeys": {}, 1039 + "uniqueConstraints": {} 1040 + }, 1041 + "notifications_to_monitors": { 1042 + "name": "notifications_to_monitors", 1043 + "columns": { 1044 + "monitor_id": { 1045 + "name": "monitor_id", 1046 + "type": "integer", 1047 + "primaryKey": false, 1048 + "notNull": true, 1049 + "autoincrement": false 1050 + }, 1051 + "notification_id": { 1052 + "name": "notification_id", 1053 + "type": "integer", 1054 + "primaryKey": false, 1055 + "notNull": true, 1056 + "autoincrement": false 1057 + } 1058 + }, 1059 + "indexes": {}, 1060 + "foreignKeys": { 1061 + "notifications_to_monitors_monitor_id_monitor_id_fk": { 1062 + "name": "notifications_to_monitors_monitor_id_monitor_id_fk", 1063 + "tableFrom": "notifications_to_monitors", 1064 + "tableTo": "monitor", 1065 + "columnsFrom": [ 1066 + "monitor_id" 1067 + ], 1068 + "columnsTo": [ 1069 + "id" 1070 + ], 1071 + "onDelete": "cascade", 1072 + "onUpdate": "no action" 1073 + }, 1074 + "notifications_to_monitors_notification_id_notification_id_fk": { 1075 + "name": "notifications_to_monitors_notification_id_notification_id_fk", 1076 + "tableFrom": "notifications_to_monitors", 1077 + "tableTo": "notification", 1078 + "columnsFrom": [ 1079 + "notification_id" 1080 + ], 1081 + "columnsTo": [ 1082 + "id" 1083 + ], 1084 + "onDelete": "cascade", 1085 + "onUpdate": "no action" 1086 + } 1087 + }, 1088 + "compositePrimaryKeys": { 1089 + "notifications_to_monitors_monitor_id_notification_id_pk": { 1090 + "columns": [ 1091 + "monitor_id", 1092 + "notification_id" 1093 + ] 1094 + } 1095 + }, 1096 + "uniqueConstraints": {} 1097 + }, 1098 + "monitor_status": { 1099 + "name": "monitor_status", 1100 + "columns": { 1101 + "monitor_id": { 1102 + "name": "monitor_id", 1103 + "type": "integer", 1104 + "primaryKey": false, 1105 + "notNull": true, 1106 + "autoincrement": false 1107 + }, 1108 + "region": { 1109 + "name": "region", 1110 + "type": "text", 1111 + "primaryKey": false, 1112 + "notNull": true, 1113 + "autoincrement": false, 1114 + "default": "''" 1115 + }, 1116 + "status": { 1117 + "name": "status", 1118 + "type": "text", 1119 + "primaryKey": false, 1120 + "notNull": true, 1121 + "autoincrement": false, 1122 + "default": "'active'" 1123 + }, 1124 + "created_at": { 1125 + "name": "created_at", 1126 + "type": "integer", 1127 + "primaryKey": false, 1128 + "notNull": false, 1129 + "autoincrement": false, 1130 + "default": "(strftime('%s', 'now'))" 1131 + }, 1132 + "updated_at": { 1133 + "name": "updated_at", 1134 + "type": "integer", 1135 + "primaryKey": false, 1136 + "notNull": false, 1137 + "autoincrement": false, 1138 + "default": "(strftime('%s', 'now'))" 1139 + } 1140 + }, 1141 + "indexes": { 1142 + "monitor_status_idx": { 1143 + "name": "monitor_status_idx", 1144 + "columns": [ 1145 + "monitor_id", 1146 + "region" 1147 + ], 1148 + "isUnique": false 1149 + } 1150 + }, 1151 + "foreignKeys": { 1152 + "monitor_status_monitor_id_monitor_id_fk": { 1153 + "name": "monitor_status_monitor_id_monitor_id_fk", 1154 + "tableFrom": "monitor_status", 1155 + "tableTo": "monitor", 1156 + "columnsFrom": [ 1157 + "monitor_id" 1158 + ], 1159 + "columnsTo": [ 1160 + "id" 1161 + ], 1162 + "onDelete": "cascade", 1163 + "onUpdate": "no action" 1164 + } 1165 + }, 1166 + "compositePrimaryKeys": { 1167 + "monitor_status_monitor_id_region_pk": { 1168 + "columns": [ 1169 + "monitor_id", 1170 + "region" 1171 + ] 1172 + } 1173 + }, 1174 + "uniqueConstraints": {} 1175 + }, 1176 + "invitation": { 1177 + "name": "invitation", 1178 + "columns": { 1179 + "id": { 1180 + "name": "id", 1181 + "type": "integer", 1182 + "primaryKey": true, 1183 + "notNull": true, 1184 + "autoincrement": false 1185 + }, 1186 + "email": { 1187 + "name": "email", 1188 + "type": "text", 1189 + "primaryKey": false, 1190 + "notNull": true, 1191 + "autoincrement": false 1192 + }, 1193 + "role": { 1194 + "name": "role", 1195 + "type": "text", 1196 + "primaryKey": false, 1197 + "notNull": true, 1198 + "autoincrement": false, 1199 + "default": "'member'" 1200 + }, 1201 + "workspace_id": { 1202 + "name": "workspace_id", 1203 + "type": "integer", 1204 + "primaryKey": false, 1205 + "notNull": true, 1206 + "autoincrement": false 1207 + }, 1208 + "token": { 1209 + "name": "token", 1210 + "type": "text", 1211 + "primaryKey": false, 1212 + "notNull": true, 1213 + "autoincrement": false 1214 + }, 1215 + "expires_at": { 1216 + "name": "expires_at", 1217 + "type": "integer", 1218 + "primaryKey": false, 1219 + "notNull": true, 1220 + "autoincrement": false 1221 + }, 1222 + "created_at": { 1223 + "name": "created_at", 1224 + "type": "integer", 1225 + "primaryKey": false, 1226 + "notNull": false, 1227 + "autoincrement": false, 1228 + "default": "(strftime('%s', 'now'))" 1229 + }, 1230 + "accepted_at": { 1231 + "name": "accepted_at", 1232 + "type": "integer", 1233 + "primaryKey": false, 1234 + "notNull": false, 1235 + "autoincrement": false 1236 + } 1237 + }, 1238 + "indexes": {}, 1239 + "foreignKeys": {}, 1240 + "compositePrimaryKeys": {}, 1241 + "uniqueConstraints": {} 1242 + } 1243 + }, 1244 + "enums": {}, 1245 + "_meta": { 1246 + "schemas": {}, 1247 + "tables": {}, 1248 + "columns": {} 1249 + } 1250 + }
+7
packages/db/drizzle/meta/_journal.json
··· 99 99 "when": 1702144660818, 100 100 "tag": "0013_tired_paladin", 101 101 "breakpoints": true 102 + }, 103 + { 104 + "idx": 14, 105 + "version": "5", 106 + "when": 1702227904130, 107 + "tag": "0014_adorable_skaar", 108 + "breakpoints": true 102 109 } 103 110 ] 104 111 }
+1 -1
packages/db/src/schema/page_subscribers/index.ts
··· 1 - export * from "./status_reports_subscribers"; 1 + export * from "./page_subscribers"; 2 2 export * from "./validation"; 3 3 export type * from "./validation";
+3 -1
packages/db/src/schema/page_subscribers/status_reports_subscribers.ts packages/db/src/schema/page_subscribers/page_subscribers.ts
··· 7 7 id: integer("id").primaryKey(), 8 8 email: text("email").notNull(), 9 9 10 - pageId: integer("page_id").references(() => page.id), 10 + pageId: integer("page_id") 11 + .notNull() 12 + .references(() => page.id), 11 13 12 14 token: text("token"), 13 15 acceptedAt: integer("accepted_at", { mode: "timestamp" }),
+1 -1
packages/db/src/schema/page_subscribers/validation.ts
··· 1 1 import { createInsertSchema, createSelectSchema } from "drizzle-zod"; 2 2 import { z } from "zod"; 3 3 4 - import { pageSubscriber } from "./status_reports_subscribers"; 4 + import { pageSubscriber } from "./page_subscribers"; 5 5 6 6 export const insertPageSubscriberSchema = createInsertSchema(pageSubscriber, { 7 7 email: z.string().email(),