Skip to content

Commit 9e29445

Browse files
committed
Types update
1 parent 93af04d commit 9e29445

File tree

5 files changed

+102
-61
lines changed

5 files changed

+102
-61
lines changed

nextjs/src/app/app/table/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export default function TaskManagementPage() {
167167
const handleRemoveTask = async (id: number): Promise<void> => {
168168
try {
169169
const supabase = await createSPASassClient();
170-
const { error: supabaseError } = await supabase.removeTask(id.toString());
170+
const { error: supabaseError } = await supabase.removeTask(id);
171171
if (supabaseError) throw supabaseError;
172172
await loadTasks();
173173
} catch (err) {
@@ -179,7 +179,7 @@ export default function TaskManagementPage() {
179179
const handleMarkAsDone = async (id: number): Promise<void> => {
180180
try {
181181
const supabase = await createSPASassClient();
182-
const { error: supabaseError } = await supabase.updateAsDone(id.toString());
182+
const { error: supabaseError } = await supabase.updateAsDone(id);
183183
if (supabaseError) throw supabaseError;
184184
setShowConfetti(true);
185185
setTimeout(() => setShowConfetti(false), 2000);

nextjs/src/lib/supabase/client.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ import {ClientType, SassClient} from "@/lib/supabase/unified";
33
import {Database} from "@/lib/types";
44

55
export function createSPAClient() {
6-
return createBrowserClient<Database>(
6+
return createBrowserClient<Database, "public", Database["public"]>(
77
process.env.NEXT_PUBLIC_SUPABASE_URL!,
88
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
99
)
1010
}
1111

1212
export async function createSPASassClient() {
1313
const client = createSPAClient();
14-
return new SassClient(client, ClientType.SPA);
14+
// This must be some bug that SupabaseClient is not properly recognized, so must be ignored
15+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
16+
return new SassClient(client as any, ClientType.SPA);
1517
}
1618

1719
export async function createSPASassClientAuthenticated() {
@@ -20,5 +22,7 @@ export async function createSPASassClientAuthenticated() {
2022
if (!user.data || !user.data.session) {
2123
window.location.href = '/auth/login';
2224
}
23-
return new SassClient(client, ClientType.SPA);
25+
// This must be some bug that SupabaseClient is not properly recognized, so must be ignored
26+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
27+
return new SassClient(client as any, ClientType.SPA);
2428
}

nextjs/src/lib/supabase/server.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {Database} from "@/lib/types";
66
export async function createSSRClient() {
77
const cookieStore = await cookies()
88

9-
return createServerClient<Database>(
9+
return createServerClient<Database, "public", Database["public"]>(
1010
process.env.NEXT_PUBLIC_SUPABASE_URL!,
1111
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
1212
{
@@ -34,5 +34,7 @@ export async function createSSRClient() {
3434

3535
export async function createSSRSassClient() {
3636
const client = await createSSRClient();
37-
return new SassClient(client, ClientType.SERVER);
37+
// This must be some bug that SupabaseClient is not properly recognized, so must be ignored
38+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
39+
return new SassClient(client as any, ClientType.SERVER);
3840
}

nextjs/src/lib/supabase/unified.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import {Database} from "@/lib/types";
44
export enum ClientType {
55
SERVER = 'server',
66
SPA = 'spa'
7+
78
}
89

910
export class SassClient {
10-
private client: SupabaseClient<Database>;
11+
private client: SupabaseClient<Database, "public", "public">;
1112
private clientType: ClientType;
1213

13-
constructor(client: SupabaseClient, clientType: ClientType) {
14+
constructor(client: SupabaseClient<Database, "public", "public">, clientType: ClientType) {
1415
this.client = client;
1516
this.clientType = clientType;
1617

@@ -86,11 +87,11 @@ export class SassClient {
8687
return this.client.from('todo_list').insert(row)
8788
}
8889

89-
async removeTask (id: string) {
90+
async removeTask (id: number) {
9091
return this.client.from('todo_list').delete().eq('id', id)
9192
}
9293

93-
async updateAsDone (id: string) {
94+
async updateAsDone (id: number) {
9495
return this.client.from('todo_list').update({done: true}).eq('id', id)
9596
}
9697

nextjs/src/lib/types.ts

Lines changed: 84 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ export type Json =
77
| Json[]
88

99
export type Database = {
10+
// Allows to automatically instantiate createClient with right options
11+
// instead of createClient<Database, { PostgrestVersion: 'XX' }>(URL, KEY)
12+
__InternalSupabase: {
13+
PostgrestVersion: "12.2.3 (519615d)"
14+
}
1015
graphql_public: {
1116
Tables: {
1217
[_ in never]: never
@@ -17,10 +22,10 @@ export type Database = {
1722
Functions: {
1823
graphql: {
1924
Args: {
25+
extensions?: Json
2026
operationName?: string
2127
query?: string
2228
variables?: Json
23-
extensions?: Json
2429
}
2530
Returns: Json
2631
}
@@ -83,99 +88,128 @@ export type Database = {
8388
}
8489
}
8590

86-
type PublicSchema = Database[Extract<keyof Database, "public">]
91+
type DatabaseWithoutInternals = Omit<Database, "__InternalSupabase">
92+
93+
type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, "public">]
8794

8895
export type Tables<
89-
PublicTableNameOrOptions extends
90-
| keyof (PublicSchema["Tables"] & PublicSchema["Views"])
91-
| { schema: keyof Database },
92-
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
93-
? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
94-
Database[PublicTableNameOrOptions["schema"]]["Views"])
96+
DefaultSchemaTableNameOrOptions extends
97+
| keyof (DefaultSchema["Tables"] & DefaultSchema["Views"])
98+
| { schema: keyof DatabaseWithoutInternals },
99+
TableName extends DefaultSchemaTableNameOrOptions extends {
100+
schema: keyof DatabaseWithoutInternals
101+
}
102+
? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
103+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])
95104
: never = never,
96-
> = PublicTableNameOrOptions extends { schema: keyof Database }
97-
? (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
98-
Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends {
105+
> = DefaultSchemaTableNameOrOptions extends {
106+
schema: keyof DatabaseWithoutInternals
107+
}
108+
? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
109+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
99110
Row: infer R
100111
}
101112
? R
102113
: never
103-
: PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] &
104-
PublicSchema["Views"])
105-
? (PublicSchema["Tables"] &
106-
PublicSchema["Views"])[PublicTableNameOrOptions] extends {
114+
: DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] &
115+
DefaultSchema["Views"])
116+
? (DefaultSchema["Tables"] &
117+
DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
107118
Row: infer R
108119
}
109120
? R
110121
: never
111122
: never
112123

113124
export type TablesInsert<
114-
PublicTableNameOrOptions extends
115-
| keyof PublicSchema["Tables"]
116-
| { schema: keyof Database },
117-
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
118-
? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
125+
DefaultSchemaTableNameOrOptions extends
126+
| keyof DefaultSchema["Tables"]
127+
| { schema: keyof DatabaseWithoutInternals },
128+
TableName extends DefaultSchemaTableNameOrOptions extends {
129+
schema: keyof DatabaseWithoutInternals
130+
}
131+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
119132
: never = never,
120-
> = PublicTableNameOrOptions extends { schema: keyof Database }
121-
? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
133+
> = DefaultSchemaTableNameOrOptions extends {
134+
schema: keyof DatabaseWithoutInternals
135+
}
136+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
122137
Insert: infer I
123138
}
124139
? I
125140
: never
126-
: PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
127-
? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
141+
: DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
142+
? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
128143
Insert: infer I
129144
}
130145
? I
131146
: never
132147
: never
133148

134149
export type TablesUpdate<
135-
PublicTableNameOrOptions extends
136-
| keyof PublicSchema["Tables"]
137-
| { schema: keyof Database },
138-
TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
139-
? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
150+
DefaultSchemaTableNameOrOptions extends
151+
| keyof DefaultSchema["Tables"]
152+
| { schema: keyof DatabaseWithoutInternals },
153+
TableName extends DefaultSchemaTableNameOrOptions extends {
154+
schema: keyof DatabaseWithoutInternals
155+
}
156+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
140157
: never = never,
141-
> = PublicTableNameOrOptions extends { schema: keyof Database }
142-
? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
158+
> = DefaultSchemaTableNameOrOptions extends {
159+
schema: keyof DatabaseWithoutInternals
160+
}
161+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
143162
Update: infer U
144163
}
145164
? U
146165
: never
147-
: PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
148-
? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
166+
: DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
167+
? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
149168
Update: infer U
150169
}
151170
? U
152171
: never
153172
: never
154173

155174
export type Enums<
156-
PublicEnumNameOrOptions extends
157-
| keyof PublicSchema["Enums"]
158-
| { schema: keyof Database },
159-
EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database }
160-
? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"]
175+
DefaultSchemaEnumNameOrOptions extends
176+
| keyof DefaultSchema["Enums"]
177+
| { schema: keyof DatabaseWithoutInternals },
178+
EnumName extends DefaultSchemaEnumNameOrOptions extends {
179+
schema: keyof DatabaseWithoutInternals
180+
}
181+
? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"]
161182
: never = never,
162-
> = PublicEnumNameOrOptions extends { schema: keyof Database }
163-
? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName]
164-
: PublicEnumNameOrOptions extends keyof PublicSchema["Enums"]
165-
? PublicSchema["Enums"][PublicEnumNameOrOptions]
183+
> = DefaultSchemaEnumNameOrOptions extends {
184+
schema: keyof DatabaseWithoutInternals
185+
}
186+
? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName]
187+
: DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"]
188+
? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions]
166189
: never
167190

168191
export type CompositeTypes<
169192
PublicCompositeTypeNameOrOptions extends
170-
| keyof PublicSchema["CompositeTypes"]
171-
| { schema: keyof Database },
193+
| keyof DefaultSchema["CompositeTypes"]
194+
| { schema: keyof DatabaseWithoutInternals },
172195
CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
173-
schema: keyof Database
196+
schema: keyof DatabaseWithoutInternals
174197
}
175-
? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
198+
? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
176199
: never = never,
177-
> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
178-
? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
179-
: PublicCompositeTypeNameOrOptions extends keyof PublicSchema["CompositeTypes"]
180-
? PublicSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
200+
> = PublicCompositeTypeNameOrOptions extends {
201+
schema: keyof DatabaseWithoutInternals
202+
}
203+
? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
204+
: PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"]
205+
? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
181206
: never
207+
208+
export const Constants = {
209+
graphql_public: {
210+
Enums: {},
211+
},
212+
public: {
213+
Enums: {},
214+
},
215+
} as const

0 commit comments

Comments
 (0)