@spfn/auth 0.1.0-alpha.88 → 0.2.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +1385 -1199
  2. package/dist/config.d.ts +409 -0
  3. package/dist/config.js +244 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/dto-CRlgoCP5.d.ts +645 -0
  6. package/dist/errors.d.ts +196 -0
  7. package/dist/errors.js +173 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/index.d.ts +287 -14
  10. package/dist/index.js +511 -6665
  11. package/dist/index.js.map +1 -1
  12. package/dist/nextjs/api.js +345 -0
  13. package/dist/nextjs/api.js.map +1 -0
  14. package/dist/{adapters/nextjs → nextjs}/server.d.ts +47 -65
  15. package/dist/nextjs/server.js +178 -0
  16. package/dist/nextjs/server.js.map +1 -0
  17. package/dist/server.d.ts +4444 -514
  18. package/dist/server.js +7977 -1210
  19. package/dist/server.js.map +1 -1
  20. package/migrations/0000_premium_famine.sql +292 -0
  21. package/migrations/meta/0000_snapshot.json +281 -46
  22. package/migrations/meta/_journal.json +2 -2
  23. package/package.json +37 -33
  24. package/dist/adapters/nextjs/api.d.ts +0 -446
  25. package/dist/adapters/nextjs/api.js +0 -3279
  26. package/dist/adapters/nextjs/api.js.map +0 -1
  27. package/dist/adapters/nextjs/server.js +0 -3645
  28. package/dist/adapters/nextjs/server.js.map +0 -1
  29. package/dist/lib/api/auth-codes-verify.d.ts +0 -37
  30. package/dist/lib/api/auth-codes-verify.js +0 -2949
  31. package/dist/lib/api/auth-codes-verify.js.map +0 -1
  32. package/dist/lib/api/auth-codes.d.ts +0 -37
  33. package/dist/lib/api/auth-codes.js +0 -2949
  34. package/dist/lib/api/auth-codes.js.map +0 -1
  35. package/dist/lib/api/auth-exists.d.ts +0 -38
  36. package/dist/lib/api/auth-exists.js +0 -2949
  37. package/dist/lib/api/auth-exists.js.map +0 -1
  38. package/dist/lib/api/auth-invitations-accept.d.ts +0 -38
  39. package/dist/lib/api/auth-invitations-accept.js +0 -2883
  40. package/dist/lib/api/auth-invitations-accept.js.map +0 -1
  41. package/dist/lib/api/auth-invitations-cancel.d.ts +0 -37
  42. package/dist/lib/api/auth-invitations-cancel.js +0 -2883
  43. package/dist/lib/api/auth-invitations-cancel.js.map +0 -1
  44. package/dist/lib/api/auth-invitations-delete.d.ts +0 -36
  45. package/dist/lib/api/auth-invitations-delete.js +0 -2883
  46. package/dist/lib/api/auth-invitations-delete.js.map +0 -1
  47. package/dist/lib/api/auth-invitations-resend.d.ts +0 -37
  48. package/dist/lib/api/auth-invitations-resend.js +0 -2883
  49. package/dist/lib/api/auth-invitations-resend.js.map +0 -1
  50. package/dist/lib/api/auth-invitations.d.ts +0 -109
  51. package/dist/lib/api/auth-invitations.js +0 -2887
  52. package/dist/lib/api/auth-invitations.js.map +0 -1
  53. package/dist/lib/api/auth-keys-rotate.d.ts +0 -37
  54. package/dist/lib/api/auth-keys-rotate.js +0 -2949
  55. package/dist/lib/api/auth-keys-rotate.js.map +0 -1
  56. package/dist/lib/api/auth-login.d.ts +0 -39
  57. package/dist/lib/api/auth-login.js +0 -2949
  58. package/dist/lib/api/auth-login.js.map +0 -1
  59. package/dist/lib/api/auth-logout.d.ts +0 -36
  60. package/dist/lib/api/auth-logout.js +0 -2949
  61. package/dist/lib/api/auth-logout.js.map +0 -1
  62. package/dist/lib/api/auth-me.d.ts +0 -50
  63. package/dist/lib/api/auth-me.js +0 -2949
  64. package/dist/lib/api/auth-me.js.map +0 -1
  65. package/dist/lib/api/auth-password.d.ts +0 -36
  66. package/dist/lib/api/auth-password.js +0 -2949
  67. package/dist/lib/api/auth-password.js.map +0 -1
  68. package/dist/lib/api/auth-register.d.ts +0 -38
  69. package/dist/lib/api/auth-register.js +0 -2949
  70. package/dist/lib/api/auth-register.js.map +0 -1
  71. package/dist/lib/api/index.d.ts +0 -356
  72. package/dist/lib/api/index.js +0 -3261
  73. package/dist/lib/api/index.js.map +0 -1
  74. package/dist/lib/config.d.ts +0 -70
  75. package/dist/lib/config.js +0 -64
  76. package/dist/lib/config.js.map +0 -1
  77. package/dist/lib/contracts/auth.d.ts +0 -302
  78. package/dist/lib/contracts/auth.js +0 -2951
  79. package/dist/lib/contracts/auth.js.map +0 -1
  80. package/dist/lib/contracts/index.d.ts +0 -3
  81. package/dist/lib/contracts/index.js +0 -3190
  82. package/dist/lib/contracts/index.js.map +0 -1
  83. package/dist/lib/contracts/invitation.d.ts +0 -243
  84. package/dist/lib/contracts/invitation.js +0 -2883
  85. package/dist/lib/contracts/invitation.js.map +0 -1
  86. package/dist/lib/crypto.d.ts +0 -76
  87. package/dist/lib/crypto.js +0 -127
  88. package/dist/lib/crypto.js.map +0 -1
  89. package/dist/lib/index.d.ts +0 -4
  90. package/dist/lib/index.js +0 -313
  91. package/dist/lib/index.js.map +0 -1
  92. package/dist/lib/session.d.ts +0 -68
  93. package/dist/lib/session.js +0 -126
  94. package/dist/lib/session.js.map +0 -1
  95. package/dist/lib/types/api.d.ts +0 -45
  96. package/dist/lib/types/api.js +0 -1
  97. package/dist/lib/types/api.js.map +0 -1
  98. package/dist/lib/types/index.d.ts +0 -3
  99. package/dist/lib/types/index.js +0 -2647
  100. package/dist/lib/types/index.js.map +0 -1
  101. package/dist/lib/types/schemas.d.ts +0 -45
  102. package/dist/lib/types/schemas.js +0 -2647
  103. package/dist/lib/types/schemas.js.map +0 -1
  104. package/dist/lib.js +0 -1
  105. package/dist/lib.js.map +0 -1
  106. package/dist/plugin.d.ts +0 -12
  107. package/dist/plugin.js +0 -9083
  108. package/dist/plugin.js.map +0 -1
  109. package/dist/server/entities/index.d.ts +0 -11
  110. package/dist/server/entities/index.js +0 -395
  111. package/dist/server/entities/index.js.map +0 -1
  112. package/dist/server/entities/invitations.d.ts +0 -241
  113. package/dist/server/entities/invitations.js +0 -184
  114. package/dist/server/entities/invitations.js.map +0 -1
  115. package/dist/server/entities/permissions.d.ts +0 -196
  116. package/dist/server/entities/permissions.js +0 -49
  117. package/dist/server/entities/permissions.js.map +0 -1
  118. package/dist/server/entities/role-permissions.d.ts +0 -107
  119. package/dist/server/entities/role-permissions.js +0 -115
  120. package/dist/server/entities/role-permissions.js.map +0 -1
  121. package/dist/server/entities/roles.d.ts +0 -196
  122. package/dist/server/entities/roles.js +0 -50
  123. package/dist/server/entities/roles.js.map +0 -1
  124. package/dist/server/entities/schema.d.ts +0 -14
  125. package/dist/server/entities/schema.js +0 -7
  126. package/dist/server/entities/schema.js.map +0 -1
  127. package/dist/server/entities/user-permissions.d.ts +0 -163
  128. package/dist/server/entities/user-permissions.js +0 -193
  129. package/dist/server/entities/user-permissions.js.map +0 -1
  130. package/dist/server/entities/user-public-keys.d.ts +0 -227
  131. package/dist/server/entities/user-public-keys.js +0 -156
  132. package/dist/server/entities/user-public-keys.js.map +0 -1
  133. package/dist/server/entities/user-social-accounts.d.ts +0 -189
  134. package/dist/server/entities/user-social-accounts.js +0 -149
  135. package/dist/server/entities/user-social-accounts.js.map +0 -1
  136. package/dist/server/entities/users.d.ts +0 -235
  137. package/dist/server/entities/users.js +0 -117
  138. package/dist/server/entities/users.js.map +0 -1
  139. package/dist/server/entities/verification-codes.d.ts +0 -191
  140. package/dist/server/entities/verification-codes.js +0 -49
  141. package/dist/server/entities/verification-codes.js.map +0 -1
  142. package/dist/server/routes/auth/index.d.ts +0 -10
  143. package/dist/server/routes/auth/index.js +0 -4460
  144. package/dist/server/routes/auth/index.js.map +0 -1
  145. package/dist/server/routes/index.d.ts +0 -6
  146. package/dist/server/routes/index.js +0 -6584
  147. package/dist/server/routes/index.js.map +0 -1
  148. package/dist/server/routes/invitations/index.d.ts +0 -10
  149. package/dist/server/routes/invitations/index.js +0 -4395
  150. package/dist/server/routes/invitations/index.js.map +0 -1
  151. package/migrations/0000_skinny_christian_walker.sql +0 -167
  152. /package/dist/{lib.d.ts → nextjs/api.d.ts} +0 -0
@@ -0,0 +1,292 @@
1
+ CREATE SCHEMA IF NOT EXISTS "spfn_auth";
2
+ --> statement-breakpoint
3
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."users" (
4
+ "id" bigserial PRIMARY KEY NOT NULL,
5
+ "email" text,
6
+ "phone" text,
7
+ "password_hash" text,
8
+ "password_change_required" boolean DEFAULT false NOT NULL,
9
+ "role_id" bigserial NOT NULL,
10
+ "status" text DEFAULT 'active' NOT NULL,
11
+ "email_verified_at" timestamp with time zone,
12
+ "phone_verified_at" timestamp with time zone,
13
+ "last_login_at" timestamp with time zone,
14
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
15
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
16
+ CONSTRAINT "users_email_unique" UNIQUE("email"),
17
+ CONSTRAINT "users_phone_unique" UNIQUE("phone"),
18
+ CONSTRAINT "email_or_phone_check" CHECK ("spfn_auth"."users"."email" IS NOT NULL OR "spfn_auth"."users"."phone" IS NOT NULL)
19
+ );
20
+ --> statement-breakpoint
21
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."user_profiles" (
22
+ "id" bigserial PRIMARY KEY NOT NULL,
23
+ "user_id" bigserial NOT NULL,
24
+ "display_name" text NOT NULL,
25
+ "first_name" text,
26
+ "last_name" text,
27
+ "avatar_url" text,
28
+ "bio" text,
29
+ "locale" text DEFAULT 'en',
30
+ "timezone" text DEFAULT 'UTC',
31
+ "date_of_birth" text,
32
+ "gender" text,
33
+ "website" text,
34
+ "location" text,
35
+ "company" text,
36
+ "job_title" text,
37
+ "metadata" jsonb,
38
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
39
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
40
+ CONSTRAINT "user_profiles_user_id_unique" UNIQUE("user_id")
41
+ );
42
+ --> statement-breakpoint
43
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."user_public_keys" (
44
+ "id" bigserial PRIMARY KEY NOT NULL,
45
+ "user_id" bigserial NOT NULL,
46
+ "key_id" text NOT NULL,
47
+ "public_key" text NOT NULL,
48
+ "algorithm" text DEFAULT 'ES256' NOT NULL,
49
+ "fingerprint" text NOT NULL,
50
+ "is_active" boolean DEFAULT true NOT NULL,
51
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
52
+ "last_used_at" timestamp with time zone,
53
+ "expires_at" timestamp with time zone,
54
+ "revoked_at" timestamp with time zone,
55
+ "revoked_reason" text,
56
+ CONSTRAINT "user_public_keys_key_id_unique" UNIQUE("key_id")
57
+ );
58
+ --> statement-breakpoint
59
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."user_social_accounts" (
60
+ "id" bigserial PRIMARY KEY NOT NULL,
61
+ "user_id" bigserial NOT NULL,
62
+ "provider" text NOT NULL,
63
+ "provider_user_id" text NOT NULL,
64
+ "provider_email" text,
65
+ "access_token" text,
66
+ "refresh_token" text,
67
+ "token_expires_at" timestamp with time zone,
68
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
69
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
70
+ );
71
+ --> statement-breakpoint
72
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."verification_codes" (
73
+ "id" bigserial PRIMARY KEY NOT NULL,
74
+ "target" text NOT NULL,
75
+ "target_type" text NOT NULL,
76
+ "code" text NOT NULL,
77
+ "purpose" text NOT NULL,
78
+ "expires_at" timestamp with time zone NOT NULL,
79
+ "used_at" timestamp with time zone,
80
+ "attempts" integer DEFAULT 0 NOT NULL,
81
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
82
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
83
+ CONSTRAINT "attempts_limit_check" CHECK ("spfn_auth"."verification_codes"."attempts" >= 0 AND "spfn_auth"."verification_codes"."attempts" <= 10)
84
+ );
85
+ --> statement-breakpoint
86
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."user_invitations" (
87
+ "id" bigserial PRIMARY KEY NOT NULL,
88
+ "email" text NOT NULL,
89
+ "token" text NOT NULL,
90
+ "role_id" bigserial NOT NULL,
91
+ "invited_by_id" bigserial NOT NULL,
92
+ "status" text DEFAULT 'pending' NOT NULL,
93
+ "expires_at" timestamp with time zone NOT NULL,
94
+ "accepted_at" timestamp with time zone,
95
+ "cancelled_at" timestamp with time zone,
96
+ "metadata" jsonb,
97
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
98
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
99
+ CONSTRAINT "user_invitations_token_unique" UNIQUE("token")
100
+ );
101
+ --> statement-breakpoint
102
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."roles" (
103
+ "id" bigserial PRIMARY KEY NOT NULL,
104
+ "name" text NOT NULL,
105
+ "display_name" text NOT NULL,
106
+ "description" text,
107
+ "is_builtin" boolean DEFAULT false NOT NULL,
108
+ "is_system" boolean DEFAULT false NOT NULL,
109
+ "is_active" boolean DEFAULT true NOT NULL,
110
+ "priority" integer DEFAULT 10 NOT NULL,
111
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
112
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
113
+ CONSTRAINT "roles_name_unique" UNIQUE("name")
114
+ );
115
+ --> statement-breakpoint
116
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."permissions" (
117
+ "id" bigserial PRIMARY KEY NOT NULL,
118
+ "name" text NOT NULL,
119
+ "display_name" text NOT NULL,
120
+ "description" text,
121
+ "category" text,
122
+ "is_builtin" boolean DEFAULT false NOT NULL,
123
+ "is_system" boolean DEFAULT false NOT NULL,
124
+ "is_active" boolean DEFAULT true NOT NULL,
125
+ "metadata" jsonb,
126
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
127
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
128
+ CONSTRAINT "permissions_name_unique" UNIQUE("name")
129
+ );
130
+ --> statement-breakpoint
131
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."role_permissions" (
132
+ "id" bigserial PRIMARY KEY NOT NULL,
133
+ "role_id" bigserial NOT NULL,
134
+ "permission_id" bigserial NOT NULL,
135
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
136
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
137
+ CONSTRAINT "role_permissions_unique" UNIQUE("role_id","permission_id")
138
+ );
139
+ --> statement-breakpoint
140
+ CREATE TABLE IF NOT EXISTS "spfn_auth"."user_permissions" (
141
+ "id" bigserial PRIMARY KEY NOT NULL,
142
+ "user_id" bigserial NOT NULL,
143
+ "permission_id" bigserial NOT NULL,
144
+ "granted" boolean DEFAULT true NOT NULL,
145
+ "reason" text,
146
+ "expires_at" timestamp with time zone,
147
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
148
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
149
+ CONSTRAINT "user_permissions_unique" UNIQUE("user_id","permission_id")
150
+ );
151
+ --> statement-breakpoint
152
+ DO $$
153
+ BEGIN
154
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'users_role_id_roles_id_fk') THEN
155
+ ALTER TABLE "spfn_auth"."users" ADD CONSTRAINT "users_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;
156
+ END IF;
157
+ END $$;
158
+ --> statement-breakpoint
159
+ DO $$
160
+ BEGIN
161
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_profiles_user_id_users_id_fk') THEN
162
+ ALTER TABLE "spfn_auth"."user_profiles" ADD CONSTRAINT "user_profiles_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;
163
+ END IF;
164
+ END $$;
165
+ --> statement-breakpoint
166
+ DO $$
167
+ BEGIN
168
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_public_keys_user_id_users_id_fk') THEN
169
+ ALTER TABLE "spfn_auth"."user_public_keys" ADD CONSTRAINT "user_public_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;
170
+ END IF;
171
+ END $$;
172
+ --> statement-breakpoint
173
+ DO $$
174
+ BEGIN
175
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_social_accounts_user_id_users_id_fk') THEN
176
+ ALTER TABLE "spfn_auth"."user_social_accounts" ADD CONSTRAINT "user_social_accounts_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;
177
+ END IF;
178
+ END $$;
179
+ --> statement-breakpoint
180
+ DO $$
181
+ BEGIN
182
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_invitations_role_id_roles_id_fk') THEN
183
+ ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;
184
+ END IF;
185
+ END $$;
186
+ --> statement-breakpoint
187
+ DO $$
188
+ BEGIN
189
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_invitations_invited_by_id_users_id_fk') THEN
190
+ ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_invited_by_id_users_id_fk" FOREIGN KEY ("invited_by_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;
191
+ END IF;
192
+ END $$;
193
+ --> statement-breakpoint
194
+ DO $$
195
+ BEGIN
196
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'role_permissions_role_id_roles_id_fk') THEN
197
+ ALTER TABLE "spfn_auth"."role_permissions" ADD CONSTRAINT "role_permissions_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;
198
+ END IF;
199
+ END $$;
200
+ --> statement-breakpoint
201
+ DO $$
202
+ BEGIN
203
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'role_permissions_permission_id_permissions_id_fk') THEN
204
+ ALTER TABLE "spfn_auth"."role_permissions" ADD CONSTRAINT "role_permissions_permission_id_permissions_id_fk" FOREIGN KEY ("permission_id") REFERENCES "spfn_auth"."permissions"("id") ON DELETE cascade ON UPDATE no action;
205
+ END IF;
206
+ END $$;
207
+ --> statement-breakpoint
208
+ DO $$
209
+ BEGIN
210
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_permissions_user_id_users_id_fk') THEN
211
+ ALTER TABLE "spfn_auth"."user_permissions" ADD CONSTRAINT "user_permissions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;
212
+ END IF;
213
+ END $$;
214
+ --> statement-breakpoint
215
+ DO $$
216
+ BEGIN
217
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_permissions_permission_id_permissions_id_fk') THEN
218
+ ALTER TABLE "spfn_auth"."user_permissions" ADD CONSTRAINT "user_permissions_permission_id_permissions_id_fk" FOREIGN KEY ("permission_id") REFERENCES "spfn_auth"."permissions"("id") ON DELETE cascade ON UPDATE no action;
219
+ END IF;
220
+ END $$;
221
+ --> statement-breakpoint
222
+ CREATE INDEX IF NOT EXISTS "users_email_idx" ON "spfn_auth"."users" USING btree ("email");
223
+ --> statement-breakpoint
224
+ CREATE INDEX IF NOT EXISTS "users_phone_idx" ON "spfn_auth"."users" USING btree ("phone");
225
+ --> statement-breakpoint
226
+ CREATE INDEX IF NOT EXISTS "users_status_idx" ON "spfn_auth"."users" USING btree ("status");
227
+ --> statement-breakpoint
228
+ CREATE INDEX IF NOT EXISTS "users_role_id_idx" ON "spfn_auth"."users" USING btree ("role_id");
229
+ --> statement-breakpoint
230
+ CREATE INDEX IF NOT EXISTS "user_profiles_user_id_idx" ON "spfn_auth"."user_profiles" USING btree ("user_id");
231
+ --> statement-breakpoint
232
+ CREATE INDEX IF NOT EXISTS "user_profiles_display_name_idx" ON "spfn_auth"."user_profiles" USING btree ("display_name");
233
+ --> statement-breakpoint
234
+ CREATE INDEX IF NOT EXISTS "user_profiles_locale_idx" ON "spfn_auth"."user_profiles" USING btree ("locale");
235
+ --> statement-breakpoint
236
+ CREATE INDEX IF NOT EXISTS "user_public_keys_user_id_idx" ON "spfn_auth"."user_public_keys" USING btree ("user_id");
237
+ --> statement-breakpoint
238
+ CREATE INDEX IF NOT EXISTS "user_public_keys_key_id_idx" ON "spfn_auth"."user_public_keys" USING btree ("key_id");
239
+ --> statement-breakpoint
240
+ CREATE INDEX IF NOT EXISTS "user_public_keys_active_idx" ON "spfn_auth"."user_public_keys" USING btree ("is_active");
241
+ --> statement-breakpoint
242
+ CREATE INDEX IF NOT EXISTS "user_public_keys_fingerprint_idx" ON "spfn_auth"."user_public_keys" USING btree ("fingerprint");
243
+ --> statement-breakpoint
244
+ CREATE INDEX IF NOT EXISTS "user_social_accounts_user_id_idx" ON "spfn_auth"."user_social_accounts" USING btree ("user_id");
245
+ --> statement-breakpoint
246
+ CREATE INDEX IF NOT EXISTS "user_social_accounts_provider_idx" ON "spfn_auth"."user_social_accounts" USING btree ("provider");
247
+ --> statement-breakpoint
248
+ CREATE UNIQUE INDEX IF NOT EXISTS "provider_user_unique_idx" ON "spfn_auth"."user_social_accounts" USING btree ("provider","provider_user_id");
249
+ --> statement-breakpoint
250
+ CREATE INDEX IF NOT EXISTS "target_purpose_idx" ON "spfn_auth"."verification_codes" USING btree ("target","purpose","expires_at");
251
+ --> statement-breakpoint
252
+ CREATE INDEX IF NOT EXISTS "invitations_token_idx" ON "spfn_auth"."user_invitations" USING btree ("token");
253
+ --> statement-breakpoint
254
+ CREATE INDEX IF NOT EXISTS "invitations_email_idx" ON "spfn_auth"."user_invitations" USING btree ("email");
255
+ --> statement-breakpoint
256
+ CREATE INDEX IF NOT EXISTS "invitations_status_idx" ON "spfn_auth"."user_invitations" USING btree ("status");
257
+ --> statement-breakpoint
258
+ CREATE INDEX IF NOT EXISTS "invitations_invited_by_idx" ON "spfn_auth"."user_invitations" USING btree ("invited_by_id");
259
+ --> statement-breakpoint
260
+ CREATE INDEX IF NOT EXISTS "invitations_expires_at_idx" ON "spfn_auth"."user_invitations" USING btree ("expires_at");
261
+ --> statement-breakpoint
262
+ CREATE INDEX IF NOT EXISTS "invitations_role_id_idx" ON "spfn_auth"."user_invitations" USING btree ("role_id");
263
+ --> statement-breakpoint
264
+ CREATE INDEX IF NOT EXISTS "roles_name_idx" ON "spfn_auth"."roles" USING btree ("name");
265
+ --> statement-breakpoint
266
+ CREATE INDEX IF NOT EXISTS "roles_is_system_idx" ON "spfn_auth"."roles" USING btree ("is_system");
267
+ --> statement-breakpoint
268
+ CREATE INDEX IF NOT EXISTS "roles_is_active_idx" ON "spfn_auth"."roles" USING btree ("is_active");
269
+ --> statement-breakpoint
270
+ CREATE INDEX IF NOT EXISTS "roles_is_builtin_idx" ON "spfn_auth"."roles" USING btree ("is_builtin");
271
+ --> statement-breakpoint
272
+ CREATE INDEX IF NOT EXISTS "roles_priority_idx" ON "spfn_auth"."roles" USING btree ("priority");
273
+ --> statement-breakpoint
274
+ CREATE INDEX IF NOT EXISTS "permissions_name_idx" ON "spfn_auth"."permissions" USING btree ("name");
275
+ --> statement-breakpoint
276
+ CREATE INDEX IF NOT EXISTS "permissions_category_idx" ON "spfn_auth"."permissions" USING btree ("category");
277
+ --> statement-breakpoint
278
+ CREATE INDEX IF NOT EXISTS "permissions_is_system_idx" ON "spfn_auth"."permissions" USING btree ("is_system");
279
+ --> statement-breakpoint
280
+ CREATE INDEX IF NOT EXISTS "permissions_is_active_idx" ON "spfn_auth"."permissions" USING btree ("is_active");
281
+ --> statement-breakpoint
282
+ CREATE INDEX IF NOT EXISTS "permissions_is_builtin_idx" ON "spfn_auth"."permissions" USING btree ("is_builtin");
283
+ --> statement-breakpoint
284
+ CREATE INDEX IF NOT EXISTS "role_permissions_role_id_idx" ON "spfn_auth"."role_permissions" USING btree ("role_id");
285
+ --> statement-breakpoint
286
+ CREATE INDEX IF NOT EXISTS "role_permissions_permission_id_idx" ON "spfn_auth"."role_permissions" USING btree ("permission_id");
287
+ --> statement-breakpoint
288
+ CREATE INDEX IF NOT EXISTS "user_permissions_user_id_idx" ON "spfn_auth"."user_permissions" USING btree ("user_id");
289
+ --> statement-breakpoint
290
+ CREATE INDEX IF NOT EXISTS "user_permissions_permission_id_idx" ON "spfn_auth"."user_permissions" USING btree ("permission_id");
291
+ --> statement-breakpoint
292
+ CREATE INDEX IF NOT EXISTS "user_permissions_expires_at_idx" ON "spfn_auth"."user_permissions" USING btree ("expires_at");