Skip to content

Commit 2a6debc

Browse files
authored
Merge branch 'master' into avallete/psql-372-postgrest-add-maxaffected-in-client-libraries
2 parents a46d54c + fd36306 commit 2a6debc

File tree

10 files changed

+93
-88
lines changed

10 files changed

+93
-88
lines changed

src/PostgrestClient.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default class PostgrestClient<
1616
Database = any,
1717
ClientOptions extends ClientServerOptions = GetGenericDatabaseWithOptions<
1818
Database,
19-
{ postgrestVersion: '12' }
19+
{ PostgrestVersion: '12' }
2020
>['options'],
2121
SchemaName extends string &
2222
keyof GetGenericDatabaseWithOptions<Database>['db'] = 'public' extends keyof GetGenericDatabaseWithOptions<Database>['db']

src/select-query-parser/result.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import {
2121
SelectQueryError,
2222
} from './utils'
2323

24-
export type SpreadOnManyEnabled<postgrestVersion extends string | undefined> =
25-
postgrestVersion extends `13${string}` ? true : false
24+
export type SpreadOnManyEnabled<PostgrestVersion extends string | undefined> =
25+
PostgrestVersion extends `13${string}` ? true : false
2626

2727
/**
2828
* Main entry point for constructing the result type of a PostgREST query.
@@ -448,7 +448,7 @@ type ProcessSpreadNode<
448448
? Result extends SelectQueryError<infer E>
449449
? SelectQueryError<E>
450450
: ExtractFirstProperty<Result> extends unknown[]
451-
? SpreadOnManyEnabled<ClientOptions['postgrestVersion']> extends true // Spread over an many-to-many relationship, turn all the result fields into correlated arrays
451+
? SpreadOnManyEnabled<ClientOptions['PostgrestVersion']> extends true // Spread over an many-to-many relationship, turn all the result fields into correlated arrays
452452
? ProcessManyToManySpreadNodeResult<Result>
453453
: {
454454
[K in Spread['target']['name']]: SelectQueryError<`"${RelationName}" and "${Spread['target']['name']}" do not form a many-to-one or one-to-one relationship spread not possible`>

src/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,19 @@ export type GenericSchema = {
7272
}
7373

7474
export type ClientServerOptions = {
75-
postgrestVersion?: string
75+
PostgrestVersion?: string
7676
}
7777

7878
export type DatabaseWithOptions<Database, Options extends ClientServerOptions> = {
7979
db: Database
8080
options: Options
8181
}
8282

83-
const INTERNAL_SUPABASE_OPTIONS = '__internal_supabase'
83+
const INTERNAL_SUPABASE_OPTIONS = '__InternalSupabase'
8484

8585
export type GetGenericDatabaseWithOptions<
8686
Database,
87-
Opts extends ClientServerOptions = { postgrestVersion: '12' }
87+
Opts extends ClientServerOptions = { PostgrestVersion: '12' }
8888
> = IsAny<Database> extends true
8989
? DatabaseWithOptions<Database, Opts>
9090
: typeof INTERNAL_SUPABASE_OPTIONS extends keyof Database

test/basic.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ describe('custom prefer headers with ', () => {
319319
})
320320

321321
test('switch schema', async () => {
322-
const postgrest = new PostgrestClient<Database, { postgrestVersion: '12' }, 'personal'>(
322+
const postgrest = new PostgrestClient<Database, { PostgrestVersion: '12' }, 'personal'>(
323323
REST_URL,
324324
{
325325
schema: 'personal',

test/index.test-d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,9 @@ const postgrestWithOptions = new PostgrestClient<DatabaseWithOptions>(REST_URL)
297297
}[]
298298
>(result.data)
299299
}
300-
// Check that client options __internal_supabase isn't considered like the other schemas
300+
// Check that client options __InternalSupabase isn't considered like the other schemas
301301
{
302302
await postgrestWithOptions
303303
// @ts-expect-error supabase internal shouldn't be available as one of the selectable schema
304-
.schema('__internal_supabase')
304+
.schema('__InternalSupabase')
305305
}

test/relationships.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Database as DatabaseWithOptions13 } from './types.override-with-options
55
const REST_URL = 'http://localhost:3000'
66
export const postgrest = new PostgrestClient<Database>(REST_URL)
77
const REST_URL_13 = 'http://localhost:3001'
8-
const postgrest13 = new PostgrestClient<Database, { postgrestVersion: '13' }>(REST_URL_13)
8+
const postgrest13 = new PostgrestClient<Database, { PostgrestVersion: '13' }>(REST_URL_13)
99
const postgrest13FromDatabaseTypes = new PostgrestClient<DatabaseWithOptions13>(REST_URL_13)
1010

1111
const userColumn: 'catchphrase' | 'username' = 'username'

test/returns.test-d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const postgrest = new PostgrestClient<Database>(REST_URL)
5353
.returns<{ username: string }[]>()
5454
expectType<
5555
PostgrestBuilder<
56-
{ postgrestVersion: '12' },
56+
{ PostgrestVersion: '12' },
5757
{
5858
Error: 'Type mismatch: Cannot cast single object to array type. Remove Array wrapper from return type or make sure you are not using .single() up in the calling chain'
5959
},

test/select-query-parser/result.test-d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type SelectQueryFromTableResult<
1616
TableName,
1717
Database['public']['Tables'][TableName]['Relationships'],
1818
Q,
19-
{ postgrestVersion: '12' }
19+
{ PostgrestVersion: '12' }
2020
>
2121

2222
// This test file is here to help develop, debug and maintain the GetResult
@@ -132,7 +132,7 @@ type SelectQueryFromTableResult<
132132
TableName,
133133
Database['personal']['Tables'][TableName]['Relationships'],
134134
Q,
135-
{ postgrestVersion: '12' }
135+
{ PostgrestVersion: '12' }
136136
>
137137
// Should work with Json object accessor
138138
{

test/types.generated-with-options-postgrest13.ts

Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,8 @@ export type Json = unknown
33
export type Database = {
44
// This is a dummy non existent schema to allow automatically passing down options
55
// to the instanciated client at type levels from the introspected database
6-
__internal_supabase: {
7-
postgrestVersion: '13.0.12'
8-
// We make this still abide to `GenericSchema` to allow types helpers bellow to work the same
9-
Tables: {
10-
[_ in never]: never
11-
}
12-
Views: {
13-
[_ in never]: never
14-
}
15-
Functions: {
16-
[_ in never]: never
17-
}
18-
Enums: {
19-
[_ in never]: never
20-
}
21-
CompositeTypes: {
22-
[_ in never]: never
23-
}
6+
__InternalSupabase: {
7+
PostgrestVersion: '13.0.12'
248
}
259
personal: {
2610
Tables: {
@@ -559,21 +543,23 @@ export type Database = {
559543
}
560544
}
561545

562-
type DefaultSchema = Database[Extract<keyof Database, 'public'>]
546+
type DatabaseWithoutInternals = Omit<Database, '__InternalSupabase'>
547+
548+
type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, 'public'>]
563549

564550
export type Tables<
565551
DefaultSchemaTableNameOrOptions extends
566552
| keyof (DefaultSchema['Tables'] & DefaultSchema['Views'])
567-
| { schema: keyof Database },
553+
| { schema: keyof DatabaseWithoutInternals },
568554
TableName extends DefaultSchemaTableNameOrOptions extends {
569-
schema: keyof Database
555+
schema: keyof DatabaseWithoutInternals
570556
}
571-
? keyof (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
572-
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])
557+
? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
558+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])
573559
: never = never
574-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
575-
? (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
576-
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
560+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
561+
? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
562+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
577563
Row: infer R
578564
}
579565
? R
@@ -589,14 +575,14 @@ export type Tables<
589575
export type TablesInsert<
590576
DefaultSchemaTableNameOrOptions extends
591577
| keyof DefaultSchema['Tables']
592-
| { schema: keyof Database },
578+
| { schema: keyof DatabaseWithoutInternals },
593579
TableName extends DefaultSchemaTableNameOrOptions extends {
594-
schema: keyof Database
580+
schema: keyof DatabaseWithoutInternals
595581
}
596-
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
582+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables']
597583
: never = never
598-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
599-
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
584+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
585+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
600586
Insert: infer I
601587
}
602588
? I
@@ -612,14 +598,14 @@ export type TablesInsert<
612598
export type TablesUpdate<
613599
DefaultSchemaTableNameOrOptions extends
614600
| keyof DefaultSchema['Tables']
615-
| { schema: keyof Database },
601+
| { schema: keyof DatabaseWithoutInternals },
616602
TableName extends DefaultSchemaTableNameOrOptions extends {
617-
schema: keyof Database
603+
schema: keyof DatabaseWithoutInternals
618604
}
619-
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
605+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables']
620606
: never = never
621-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
622-
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
607+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
608+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
623609
Update: infer U
624610
}
625611
? U
@@ -633,29 +619,31 @@ export type TablesUpdate<
633619
: never
634620

635621
export type Enums<
636-
DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums'] | { schema: keyof Database },
622+
DefaultSchemaEnumNameOrOptions extends
623+
| keyof DefaultSchema['Enums']
624+
| { schema: keyof DatabaseWithoutInternals },
637625
EnumName extends DefaultSchemaEnumNameOrOptions extends {
638-
schema: keyof Database
626+
schema: keyof DatabaseWithoutInternals
639627
}
640-
? keyof Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums']
628+
? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums']
641629
: never = never
642-
> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database }
643-
? Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName]
630+
> = DefaultSchemaEnumNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
631+
? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName]
644632
: DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums']
645633
? DefaultSchema['Enums'][DefaultSchemaEnumNameOrOptions]
646634
: never
647635

648636
export type CompositeTypes<
649637
PublicCompositeTypeNameOrOptions extends
650638
| keyof DefaultSchema['CompositeTypes']
651-
| { schema: keyof Database },
639+
| { schema: keyof DatabaseWithoutInternals },
652640
CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
653-
schema: keyof Database
641+
schema: keyof DatabaseWithoutInternals
654642
}
655-
? keyof Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
643+
? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
656644
: never = never
657-
> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
658-
? Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
645+
> = PublicCompositeTypeNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
646+
? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
659647
: PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes']
660648
? DefaultSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions]
661649
: never

test/types.override-with-options-postgrest13.ts

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,21 +47,23 @@ export type Database = MergeDeep<
4747
}
4848
>
4949

50-
type DefaultSchema = Database[Extract<keyof Database, 'public'>]
50+
type DatabaseWithoutInternals = Omit<Database, '__InternalSupabase'>
51+
52+
type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, 'public'>]
5153

5254
export type Tables<
5355
DefaultSchemaTableNameOrOptions extends
5456
| keyof (DefaultSchema['Tables'] & DefaultSchema['Views'])
55-
| { schema: keyof Database },
57+
| { schema: keyof DatabaseWithoutInternals },
5658
TableName extends DefaultSchemaTableNameOrOptions extends {
57-
schema: keyof Database
59+
schema: keyof DatabaseWithoutInternals
5860
}
59-
? keyof (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
60-
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])
61+
? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
62+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])
6163
: never = never
62-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
63-
? (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
64-
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
64+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
65+
? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
66+
DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
6567
Row: infer R
6668
}
6769
? R
@@ -77,14 +79,14 @@ export type Tables<
7779
export type TablesInsert<
7880
DefaultSchemaTableNameOrOptions extends
7981
| keyof DefaultSchema['Tables']
80-
| { schema: keyof Database },
82+
| { schema: keyof DatabaseWithoutInternals },
8183
TableName extends DefaultSchemaTableNameOrOptions extends {
82-
schema: keyof Database
84+
schema: keyof DatabaseWithoutInternals
8385
}
84-
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
86+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables']
8587
: never = never
86-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
87-
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
88+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
89+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
8890
Insert: infer I
8991
}
9092
? I
@@ -100,14 +102,14 @@ export type TablesInsert<
100102
export type TablesUpdate<
101103
DefaultSchemaTableNameOrOptions extends
102104
| keyof DefaultSchema['Tables']
103-
| { schema: keyof Database },
105+
| { schema: keyof DatabaseWithoutInternals },
104106
TableName extends DefaultSchemaTableNameOrOptions extends {
105-
schema: keyof Database
107+
schema: keyof DatabaseWithoutInternals
106108
}
107-
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
109+
? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables']
108110
: never = never
109-
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
110-
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
111+
> = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
112+
? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
111113
Update: infer U
112114
}
113115
? U
@@ -121,29 +123,44 @@ export type TablesUpdate<
121123
: never
122124

123125
export type Enums<
124-
DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums'] | { schema: keyof Database },
126+
DefaultSchemaEnumNameOrOptions extends
127+
| keyof DefaultSchema['Enums']
128+
| { schema: keyof DatabaseWithoutInternals },
125129
EnumName extends DefaultSchemaEnumNameOrOptions extends {
126-
schema: keyof Database
130+
schema: keyof DatabaseWithoutInternals
127131
}
128-
? keyof Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums']
132+
? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums']
129133
: never = never
130-
> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database }
131-
? Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName]
134+
> = DefaultSchemaEnumNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
135+
? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName]
132136
: DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums']
133137
? DefaultSchema['Enums'][DefaultSchemaEnumNameOrOptions]
134138
: never
135139

136140
export type CompositeTypes<
137141
PublicCompositeTypeNameOrOptions extends
138142
| keyof DefaultSchema['CompositeTypes']
139-
| { schema: keyof Database },
143+
| { schema: keyof DatabaseWithoutInternals },
140144
CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
141-
schema: keyof Database
145+
schema: keyof DatabaseWithoutInternals
142146
}
143-
? keyof Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
147+
? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
144148
: never = never
145-
> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
146-
? Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
149+
> = PublicCompositeTypeNameOrOptions extends { schema: keyof DatabaseWithoutInternals }
150+
? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
147151
: PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes']
148152
? DefaultSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions]
149153
: never
154+
155+
export const Constants = {
156+
personal: {
157+
Enums: {
158+
user_status: ['ONLINE', 'OFFLINE'],
159+
},
160+
},
161+
public: {
162+
Enums: {
163+
user_status: ['ONLINE', 'OFFLINE'],
164+
},
165+
},
166+
} as const

0 commit comments

Comments
 (0)