say-under-me 0.0.2 → 0.0.3

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.
package/dist/index.d.mts CHANGED
@@ -1,3 +1,5 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+
1
3
  type sayHelloProps = {
2
4
  firstName: string;
3
5
  lastName?: string;
@@ -60,4 +62,15 @@ declare class PrismaCrud<T> {
60
62
  private parseId;
61
63
  }
62
64
 
63
- export { type ParseOptions, PrismaCrud, type PrismaQuery, parsePrismaQuery, sayHello, type sayHelloProps };
65
+ /**
66
+ * Creates a set of Next.js App Router handlers (GET, POST, PATCH, DELETE)
67
+ * for a given Prisma model
68
+ */
69
+ declare function createApiHandler<T>(crud: PrismaCrud<T>): {
70
+ GET: (req: NextRequest, context: any) => Promise<NextResponse<any>>;
71
+ POST: (req: NextRequest) => Promise<NextResponse<any>>;
72
+ PATCH: (req: NextRequest, context: any) => Promise<NextResponse<any>>;
73
+ DELETE: (req: NextRequest, context: any) => Promise<NextResponse<unknown>>;
74
+ };
75
+
76
+ export { type ParseOptions, PrismaCrud, type PrismaQuery, createApiHandler, parsePrismaQuery, sayHello, type sayHelloProps };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+
1
3
  type sayHelloProps = {
2
4
  firstName: string;
3
5
  lastName?: string;
@@ -60,4 +62,15 @@ declare class PrismaCrud<T> {
60
62
  private parseId;
61
63
  }
62
64
 
63
- export { type ParseOptions, PrismaCrud, type PrismaQuery, parsePrismaQuery, sayHello, type sayHelloProps };
65
+ /**
66
+ * Creates a set of Next.js App Router handlers (GET, POST, PATCH, DELETE)
67
+ * for a given Prisma model
68
+ */
69
+ declare function createApiHandler<T>(crud: PrismaCrud<T>): {
70
+ GET: (req: NextRequest, context: any) => Promise<NextResponse<any>>;
71
+ POST: (req: NextRequest) => Promise<NextResponse<any>>;
72
+ PATCH: (req: NextRequest, context: any) => Promise<NextResponse<any>>;
73
+ DELETE: (req: NextRequest, context: any) => Promise<NextResponse<unknown>>;
74
+ };
75
+
76
+ export { type ParseOptions, PrismaCrud, type PrismaQuery, createApiHandler, parsePrismaQuery, sayHello, type sayHelloProps };
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  PrismaCrud: () => PrismaCrud,
24
+ createApiHandler: () => createApiHandler,
24
25
  parsePrismaQuery: () => parsePrismaQuery,
25
26
  sayHello: () => sayHello
26
27
  });
@@ -210,9 +211,67 @@ var PrismaCrud = class {
210
211
  return id;
211
212
  }
212
213
  };
214
+
215
+ // src/adapters/next-handler.ts
216
+ var import_server = require("next/server");
217
+ function createApiHandler(crud) {
218
+ const GET = async (req, context) => {
219
+ try {
220
+ const params = await context.params;
221
+ const id = params?.id;
222
+ const { searchParams } = new URL(req.url);
223
+ const queryString = searchParams.toString();
224
+ if (id) {
225
+ const data2 = await crud.getById(id, queryString);
226
+ if (!data2) {
227
+ return import_server.NextResponse.json({ error: "Record not found" }, { status: 404 });
228
+ }
229
+ return import_server.NextResponse.json(data2);
230
+ }
231
+ const data = await crud.getAll(queryString);
232
+ return import_server.NextResponse.json(data);
233
+ } catch (error) {
234
+ return import_server.NextResponse.json({ error: error.message }, { status: 500 });
235
+ }
236
+ };
237
+ const POST = async (req) => {
238
+ try {
239
+ const body = await req.json();
240
+ const data = await crud.create(body);
241
+ return import_server.NextResponse.json(data, { status: 201 });
242
+ } catch (error) {
243
+ return import_server.NextResponse.json({ error: error.message }, { status: 400 });
244
+ }
245
+ };
246
+ const PATCH = async (req, context) => {
247
+ try {
248
+ const param = await context.params;
249
+ const id = param?.id;
250
+ if (!id) return import_server.NextResponse.json({ error: "ID is required" }, { status: 400 });
251
+ const body = await req.json();
252
+ const data = await crud.update(id, body);
253
+ return import_server.NextResponse.json(data);
254
+ } catch (error) {
255
+ return import_server.NextResponse.json({ error: error.message }, { status: 400 });
256
+ }
257
+ };
258
+ const DELETE = async (req, context) => {
259
+ try {
260
+ const params = await context.params;
261
+ const id = params?.id;
262
+ if (!id) return import_server.NextResponse.json({ error: "ID is required" }, { status: 400 });
263
+ await crud.delete(id);
264
+ return new import_server.NextResponse(null, { status: 204 });
265
+ } catch (error) {
266
+ return import_server.NextResponse.json({ error: error.message }, { status: 400 });
267
+ }
268
+ };
269
+ return { GET, POST, PATCH, DELETE };
270
+ }
213
271
  // Annotate the CommonJS export names for ESM import in node:
214
272
  0 && (module.exports = {
215
273
  PrismaCrud,
274
+ createApiHandler,
216
275
  parsePrismaQuery,
217
276
  sayHello
218
277
  });
package/dist/index.mjs CHANGED
@@ -182,8 +182,66 @@ var PrismaCrud = class {
182
182
  return id;
183
183
  }
184
184
  };
185
+
186
+ // src/adapters/next-handler.ts
187
+ import { NextResponse } from "next/server";
188
+ function createApiHandler(crud) {
189
+ const GET = async (req, context) => {
190
+ try {
191
+ const params = await context.params;
192
+ const id = params?.id;
193
+ const { searchParams } = new URL(req.url);
194
+ const queryString = searchParams.toString();
195
+ if (id) {
196
+ const data2 = await crud.getById(id, queryString);
197
+ if (!data2) {
198
+ return NextResponse.json({ error: "Record not found" }, { status: 404 });
199
+ }
200
+ return NextResponse.json(data2);
201
+ }
202
+ const data = await crud.getAll(queryString);
203
+ return NextResponse.json(data);
204
+ } catch (error) {
205
+ return NextResponse.json({ error: error.message }, { status: 500 });
206
+ }
207
+ };
208
+ const POST = async (req) => {
209
+ try {
210
+ const body = await req.json();
211
+ const data = await crud.create(body);
212
+ return NextResponse.json(data, { status: 201 });
213
+ } catch (error) {
214
+ return NextResponse.json({ error: error.message }, { status: 400 });
215
+ }
216
+ };
217
+ const PATCH = async (req, context) => {
218
+ try {
219
+ const param = await context.params;
220
+ const id = param?.id;
221
+ if (!id) return NextResponse.json({ error: "ID is required" }, { status: 400 });
222
+ const body = await req.json();
223
+ const data = await crud.update(id, body);
224
+ return NextResponse.json(data);
225
+ } catch (error) {
226
+ return NextResponse.json({ error: error.message }, { status: 400 });
227
+ }
228
+ };
229
+ const DELETE = async (req, context) => {
230
+ try {
231
+ const params = await context.params;
232
+ const id = params?.id;
233
+ if (!id) return NextResponse.json({ error: "ID is required" }, { status: 400 });
234
+ await crud.delete(id);
235
+ return new NextResponse(null, { status: 204 });
236
+ } catch (error) {
237
+ return NextResponse.json({ error: error.message }, { status: 400 });
238
+ }
239
+ };
240
+ return { GET, POST, PATCH, DELETE };
241
+ }
185
242
  export {
186
243
  PrismaCrud,
244
+ createApiHandler,
187
245
  parsePrismaQuery,
188
246
  sayHello
189
247
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "say-under-me",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",