0000_puzzling_sleepwalker.sql 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. CREATE TABLE "group_roles" (
  2. "group_id" uuid,
  3. "role_id" uuid,
  4. CONSTRAINT "group_roles_group_id_role_id_pk" PRIMARY KEY("group_id","role_id")
  5. );
  6. --> statement-breakpoint
  7. CREATE TABLE "groups" (
  8. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  9. "name" varchar(100) NOT NULL,
  10. "parent_id" uuid,
  11. "created_at" timestamp DEFAULT now() NOT NULL
  12. );
  13. --> statement-breakpoint
  14. CREATE TABLE "permissions" (
  15. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  16. "action" varchar(50) NOT NULL,
  17. "resource_type" varchar(50) NOT NULL
  18. );
  19. --> statement-breakpoint
  20. CREATE TABLE "role_permissions" (
  21. "role_id" uuid,
  22. "permission_id" uuid,
  23. CONSTRAINT "role_permissions_role_id_permission_id_pk" PRIMARY KEY("role_id","permission_id")
  24. );
  25. --> statement-breakpoint
  26. CREATE TABLE "roles" (
  27. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  28. "name" varchar(50) NOT NULL,
  29. "description" text,
  30. CONSTRAINT "roles_name_unique" UNIQUE("name")
  31. );
  32. --> statement-breakpoint
  33. CREATE TABLE "user_groups" (
  34. "user_id" uuid,
  35. "group_id" uuid,
  36. CONSTRAINT "user_groups_user_id_group_id_pk" PRIMARY KEY("user_id","group_id")
  37. );
  38. --> statement-breakpoint
  39. CREATE TABLE "user_roles" (
  40. "user_id" uuid,
  41. "role_id" uuid,
  42. CONSTRAINT "user_roles_user_id_role_id_pk" PRIMARY KEY("user_id","role_id")
  43. );
  44. --> statement-breakpoint
  45. CREATE TABLE "users" (
  46. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  47. "email" varchar(255) NOT NULL,
  48. "name" text,
  49. "password_hash" text NOT NULL,
  50. "created_at" timestamp DEFAULT now() NOT NULL,
  51. "updated_at" timestamp DEFAULT now() NOT NULL,
  52. CONSTRAINT "users_email_unique" UNIQUE("email")
  53. );
  54. --> statement-breakpoint
  55. CREATE TABLE "acl_rules" (
  56. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  57. "resource_id" uuid NOT NULL,
  58. "subject_type" varchar(20) NOT NULL,
  59. "subject_id" uuid NOT NULL,
  60. "permission_type" varchar(20) NOT NULL,
  61. "action" varchar(50) NOT NULL,
  62. "created_at" timestamp DEFAULT now() NOT NULL
  63. );
  64. --> statement-breakpoint
  65. CREATE TABLE "resources" (
  66. "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  67. "name" varchar(255) NOT NULL,
  68. "path" text NOT NULL,
  69. "type" varchar(50) NOT NULL,
  70. "owner_id" uuid,
  71. "created_at" timestamp DEFAULT now() NOT NULL,
  72. "updated_at" timestamp DEFAULT now() NOT NULL,
  73. CONSTRAINT "resources_path_unique" UNIQUE("path")
  74. );
  75. --> statement-breakpoint
  76. ALTER TABLE "group_roles" ADD CONSTRAINT "group_roles_group_id_groups_id_fk" FOREIGN KEY ("group_id") REFERENCES "public"."groups"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  77. ALTER TABLE "group_roles" ADD CONSTRAINT "group_roles_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  78. ALTER TABLE "role_permissions" ADD CONSTRAINT "role_permissions_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  79. ALTER TABLE "role_permissions" ADD CONSTRAINT "role_permissions_permission_id_permissions_id_fk" FOREIGN KEY ("permission_id") REFERENCES "public"."permissions"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  80. ALTER TABLE "user_groups" ADD CONSTRAINT "user_groups_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  81. ALTER TABLE "user_groups" ADD CONSTRAINT "user_groups_group_id_groups_id_fk" FOREIGN KEY ("group_id") REFERENCES "public"."groups"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  82. ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  83. ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  84. ALTER TABLE "acl_rules" ADD CONSTRAINT "acl_rules_resource_id_resources_id_fk" FOREIGN KEY ("resource_id") REFERENCES "public"."resources"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
  85. ALTER TABLE "resources" ADD CONSTRAINT "resources_owner_id_users_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;