@motherbase/client 2.2.3 → 2.2.4
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.
|
@@ -69,6 +69,16 @@ export interface FindManyArgs<Row, Select extends SelectColumns<Row> | undefined
|
|
|
69
69
|
/** Skip this many rows first. Needs `take`. */
|
|
70
70
|
skip?: number;
|
|
71
71
|
}
|
|
72
|
+
/** What `findUnique()` accepts: a `where` that must name a column, and optionally a `select`. */
|
|
73
|
+
export interface FindUniqueArgs<Row, Select extends SelectColumns<Row> | undefined = undefined> {
|
|
74
|
+
where: Where<Row>;
|
|
75
|
+
select?: Select;
|
|
76
|
+
}
|
|
77
|
+
/** What `createMany()` accepts. `skipDuplicates` drops rows whose primary key already exists. */
|
|
78
|
+
export interface CreateManyArgs<Insert> {
|
|
79
|
+
data: Insert[];
|
|
80
|
+
skipDuplicates?: boolean;
|
|
81
|
+
}
|
|
72
82
|
/** `select: { id: true }` narrows each result to `Pick<Row, 'id'>`; no select is the whole row. */
|
|
73
83
|
export type Selected<Row, Select> = Select extends SelectColumns<Row> ? Pick<Row, Extract<keyof Select, keyof Row>> : Row;
|
|
74
84
|
/**
|
|
@@ -86,6 +96,30 @@ export interface TableFacade<Row, Insert, Update> {
|
|
|
86
96
|
* @example await client.db.posts.findFirst({ where: { slug } })
|
|
87
97
|
*/
|
|
88
98
|
findFirst<Select extends SelectColumns<Row> | undefined = undefined>(args?: Omit<FindManyArgs<Row, Select>, 'take'>): Promise<Selected<Row, Select> | null>;
|
|
99
|
+
/**
|
|
100
|
+
* Like `findFirst()`, but throws when no row matches.
|
|
101
|
+
* @example await client.db.posts.findFirstOrThrow({ where: { slug } })
|
|
102
|
+
*/
|
|
103
|
+
findFirstOrThrow<Select extends SelectColumns<Row> | undefined = undefined>(args?: Omit<FindManyArgs<Row, Select>, 'take'>): Promise<Selected<Row, Select>>;
|
|
104
|
+
/**
|
|
105
|
+
* Read the one row matching `where`, or `null` when none does. Throws if
|
|
106
|
+
* several match: the database knows which columns are unique, the facade
|
|
107
|
+
* only sees the answer.
|
|
108
|
+
* @example await client.db.posts.findUnique({ where: { id } })
|
|
109
|
+
*/
|
|
110
|
+
findUnique<Select extends SelectColumns<Row> | undefined = undefined>(args: FindUniqueArgs<Row, Select>): Promise<Selected<Row, Select> | null>;
|
|
111
|
+
/**
|
|
112
|
+
* Like `findUnique()`, but throws when no row matches.
|
|
113
|
+
* @example await client.db.posts.findUniqueOrThrow({ where: { id } })
|
|
114
|
+
*/
|
|
115
|
+
findUniqueOrThrow<Select extends SelectColumns<Row> | undefined = undefined>(args: FindUniqueArgs<Row, Select>): Promise<Selected<Row, Select>>;
|
|
116
|
+
/**
|
|
117
|
+
* Count the rows matching `where`, without reading them.
|
|
118
|
+
* @example await client.db.posts.count({ where: { published: true } })
|
|
119
|
+
*/
|
|
120
|
+
count(args?: {
|
|
121
|
+
where?: Where<Row>;
|
|
122
|
+
}): Promise<number>;
|
|
89
123
|
/**
|
|
90
124
|
* Insert one row and resolve it as stored, defaults and generated ids included.
|
|
91
125
|
* @example const post = await client.db.posts.create({ data: { title } })
|
|
@@ -93,6 +127,28 @@ export interface TableFacade<Row, Insert, Update> {
|
|
|
93
127
|
create(args: {
|
|
94
128
|
data: Insert;
|
|
95
129
|
}): Promise<Row>;
|
|
130
|
+
/**
|
|
131
|
+
* Insert several rows in one request and resolve how many were inserted.
|
|
132
|
+
* `skipDuplicates` drops rows whose primary key already exists.
|
|
133
|
+
* @example await client.db.tags.createMany({ data: [{ name: 'a' }, { name: 'b' }], skipDuplicates: true })
|
|
134
|
+
*/
|
|
135
|
+
createMany(args: CreateManyArgs<Insert>): Promise<{
|
|
136
|
+
count: number;
|
|
137
|
+
}>;
|
|
138
|
+
/**
|
|
139
|
+
* `createMany()` resolving the inserted rows instead of their count.
|
|
140
|
+
* @example const tags = await client.db.tags.createManyAndReturn({ data: [{ name: 'a' }] })
|
|
141
|
+
*/
|
|
142
|
+
createManyAndReturn(args: CreateManyArgs<Insert>): Promise<Row[]>;
|
|
143
|
+
/**
|
|
144
|
+
* Update the one row matching `where` and resolve it. Throws when none
|
|
145
|
+
* matches, and when several would: the server refuses before writing.
|
|
146
|
+
* @example await client.db.posts.update({ where: { id }, data: { title } })
|
|
147
|
+
*/
|
|
148
|
+
update(args: {
|
|
149
|
+
where: Where<Row>;
|
|
150
|
+
data: Update;
|
|
151
|
+
}): Promise<Row>;
|
|
96
152
|
/**
|
|
97
153
|
* Update every row matching `where` and resolve the updated rows (Prisma
|
|
98
154
|
* resolves `{ count }`). Throws if `where` matches no column, so an id that
|
|
@@ -112,6 +168,24 @@ export interface TableFacade<Row, Insert, Update> {
|
|
|
112
168
|
deleteMany(args: {
|
|
113
169
|
where: Where<Row>;
|
|
114
170
|
}): Promise<Row[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Delete the one row matching `where` and resolve it. Throws when none
|
|
173
|
+
* matches, and when several would: the server refuses before deleting.
|
|
174
|
+
* @example await client.db.posts.delete({ where: { id } })
|
|
175
|
+
*/
|
|
176
|
+
delete(args: {
|
|
177
|
+
where: Where<Row>;
|
|
178
|
+
}): Promise<Row>;
|
|
179
|
+
/**
|
|
180
|
+
* Update the row matching `where` with `update`, or insert `create` when
|
|
181
|
+
* none matches, and resolve the row.
|
|
182
|
+
* @example await client.db.likes.upsert({ where: { post_id, user_id }, create: { post_id, user_id }, update: {} })
|
|
183
|
+
*/
|
|
184
|
+
upsert(args: {
|
|
185
|
+
where: Where<Row>;
|
|
186
|
+
create: Insert;
|
|
187
|
+
update: Update;
|
|
188
|
+
}): Promise<Row>;
|
|
115
189
|
}
|
|
116
190
|
/** `client.db`: one `TableFacade` per table or view of the generated `Database`. */
|
|
117
191
|
export type DatabaseFacade<Schema extends GenericSchema> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/database/facade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIzF,wFAAwF;AACxF,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,qEAAqE;IACrE,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,kCAAkC;IAClC,EAAE,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IACtB,oBAAoB;IACpB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,6BAA6B;IAC7B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,iBAAiB;IACjB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,0BAA0B;IAC1B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,MAAM,MAAM,KAAK,CAAC,GAAG,IAAI;KAAG,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC;AAC/F,uFAAuF;AACvF,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI;KAAG,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI;CAAE,CAAC;AAClE,wFAAwF;AACxF,MAAM,MAAM,OAAO,CAAC,GAAG,IAAI;KAAG,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;CAAE,CAAC;AAEtE,2EAA2E;AAC3E,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,MAAM,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;IAC1F,6DAA6D;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,mGAAmG;AACnG,MAAM,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,MAAM,SAAS,aAAa,CAAC,GAAG,CAAC,GACjE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAC3C,GAAG,CAAC;AAER;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM;IAC9C;;;OAGG;IACH,QAAQ,CAAC,MAAM,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,EAChE,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC;;;OAGG;IACH,SAAS,CAAC,MAAM,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,EACjE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,GAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACzC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/database/facade.ts"],"names":[],"mappings":"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"}
|
package/dist/database/facade.js
CHANGED
|
@@ -84,10 +84,25 @@ function applyFilter(query, { column, operator, value }) {
|
|
|
84
84
|
function requireFilters(where, method) {
|
|
85
85
|
const filters = filtersOf(where);
|
|
86
86
|
if (!filters.length) {
|
|
87
|
-
throw new Error(`${method}(): where matched no column. Use client.from(table) to
|
|
87
|
+
throw new Error(`${method}(): where matched no column. Use client.from(table) to target every row.`);
|
|
88
88
|
}
|
|
89
89
|
return filters;
|
|
90
90
|
}
|
|
91
|
+
/** `query` narrowed by a `where` that must not be empty. */
|
|
92
|
+
function narrowed(query, where, method) {
|
|
93
|
+
for (const filter of requireFilters(where, method))
|
|
94
|
+
applyFilter(query, filter);
|
|
95
|
+
return query;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* A PATCH or DELETE matching nothing answers 404 here (under compat it
|
|
99
|
+
* resolves empty instead). Either way it means no row, not a failure.
|
|
100
|
+
*/
|
|
101
|
+
function noRows(error) {
|
|
102
|
+
if (error.status === 404)
|
|
103
|
+
return [];
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
91
106
|
/** The read half: `findMany` arguments applied to a fresh builder. Exported for tests. */
|
|
92
107
|
export function applyFindArgs(query, args = {}) {
|
|
93
108
|
query.select(args.select ? Object.keys(args.select).join(',') : '*');
|
|
@@ -118,6 +133,11 @@ async function dataOf(query) {
|
|
|
118
133
|
* one instead of throwing synchronously.
|
|
119
134
|
*/
|
|
120
135
|
export function tableFacade(newQuery) {
|
|
136
|
+
async function createManyAndReturn({ data, skipDuplicates }) {
|
|
137
|
+
const rows = data;
|
|
138
|
+
const query = skipDuplicates ? newQuery().upsert(rows, { ignoreDuplicates: true }) : newQuery().insert(rows);
|
|
139
|
+
return dataOf(query.select().throwOnError());
|
|
140
|
+
}
|
|
121
141
|
return {
|
|
122
142
|
async findMany(args) {
|
|
123
143
|
return dataOf(applyFindArgs(newQuery(), args).throwOnError());
|
|
@@ -125,22 +145,53 @@ export function tableFacade(newQuery) {
|
|
|
125
145
|
async findFirst(args) {
|
|
126
146
|
return dataOf(applyFindArgs(newQuery(), { ...args, take: 1 }).throwOnError().maybeSingle());
|
|
127
147
|
},
|
|
148
|
+
async findFirstOrThrow(args) {
|
|
149
|
+
return dataOf(applyFindArgs(newQuery(), { ...args, take: 1 }).throwOnError().single());
|
|
150
|
+
},
|
|
151
|
+
// Two rows are enough to tell a unique match from several, without reading them all.
|
|
152
|
+
async findUnique(args) {
|
|
153
|
+
requireFilters(args.where, 'findUnique');
|
|
154
|
+
return dataOf(applyFindArgs(newQuery(), { ...args, take: 2 }).throwOnError().maybeSingle());
|
|
155
|
+
},
|
|
156
|
+
async findUniqueOrThrow(args) {
|
|
157
|
+
requireFilters(args.where, 'findUniqueOrThrow');
|
|
158
|
+
return dataOf(applyFindArgs(newQuery(), { ...args, take: 2 }).throwOnError().single());
|
|
159
|
+
},
|
|
160
|
+
async count(args) {
|
|
161
|
+
const query = newQuery().select('*', { count: 'exact', head: true });
|
|
162
|
+
for (const filter of filtersOf(args?.where))
|
|
163
|
+
applyFilter(query, filter);
|
|
164
|
+
return (await query.throwOnError()).count ?? 0;
|
|
165
|
+
},
|
|
128
166
|
async create({ data }) {
|
|
129
167
|
return dataOf(newQuery().insert(data).select().throwOnError().single());
|
|
130
168
|
},
|
|
169
|
+
// The server sends no Content-Range on writes, so the count is of the rows sent back.
|
|
170
|
+
async createMany(args) {
|
|
171
|
+
return { count: (await createManyAndReturn(args)).length };
|
|
172
|
+
},
|
|
173
|
+
createManyAndReturn,
|
|
174
|
+
async update({ where, data }) {
|
|
175
|
+
const query = narrowed(newQuery().update(data), where, 'update').maxAffected(1);
|
|
176
|
+
return dataOf(query.select().throwOnError().single());
|
|
177
|
+
},
|
|
131
178
|
async updateMany({ where, data }) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return dataOf(query.select().throwOnError());
|
|
179
|
+
return dataOf(narrowed(newQuery().update(data), where, 'updateMany').select().throwOnError());
|
|
180
|
+
},
|
|
181
|
+
async delete({ where }) {
|
|
182
|
+
const query = narrowed(newQuery().delete(), where, 'delete').maxAffected(1);
|
|
183
|
+
return dataOf(query.select().throwOnError().single());
|
|
137
184
|
},
|
|
138
185
|
async deleteMany({ where }) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
186
|
+
return dataOf(narrowed(newQuery().delete(), where, 'deleteMany').select().throwOnError());
|
|
187
|
+
},
|
|
188
|
+
// ponytail: update, then insert if nothing matched. A concurrent insert in
|
|
189
|
+
// between fails on the unique constraint instead of merging; Prisma's own
|
|
190
|
+
// non-native upsert has the same gap.
|
|
191
|
+
async upsert({ where, create, update }) {
|
|
192
|
+
const query = narrowed(newQuery().update(update), where, 'upsert').maxAffected(1);
|
|
193
|
+
const [updated] = await dataOf(query.select().throwOnError()).catch(noRows);
|
|
194
|
+
return updated ?? dataOf(newQuery().insert(create).select().throwOnError().single());
|
|
144
195
|
},
|
|
145
196
|
};
|
|
146
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/database/facade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/database/facade.ts"],"names":[],"mappings":"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"}
|