diff --git a/src/lib/PostgrestQueryBuilder.ts b/src/lib/PostgrestQueryBuilder.ts index ce31f65d..8c5766f8 100644 --- a/src/lib/PostgrestQueryBuilder.ts +++ b/src/lib/PostgrestQueryBuilder.ts @@ -107,6 +107,12 @@ export default class PostgrestQueryBuilder extends PostgrestBuilder { this.headers['Prefer'] = prefersHeaders.join(',') + if (Array.isArray(values)) { + const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), [] as string[]) + const uniqueColumns = [...new Set(columns)] + this.url.searchParams.set('columns', uniqueColumns.join(',')) + } + return new PostgrestFilterBuilder(this) } diff --git a/test/basic.ts b/test/basic.ts index f276852d..2fbb1a9a 100644 --- a/test/basic.ts +++ b/test/basic.ts @@ -234,3 +234,8 @@ describe("insert, update, delete with count: 'exact'", () => { expect(res).toMatchSnapshot() }) }) + +test('insert includes columns param', async () => { + const client = postgrest.from('users').insert([{ foo: 1 }, { bar: 2 }]) + expect((client as any).url.searchParams.get('columns')).toMatchInlineSnapshot(`"foo,bar"`) +})