upd: api ai
Deskripsi: - perbaiki get data - api ai data desa - api ai version app No Issues
This commit is contained in:
@@ -33,19 +33,34 @@ components:
|
|||||||
message:
|
message:
|
||||||
type: string
|
type: string
|
||||||
description: Response message or error description
|
description: Response message or error description
|
||||||
meta:
|
|
||||||
type: object
|
# Village
|
||||||
|
VillageListResponse:
|
||||||
|
allOf:
|
||||||
|
- $ref: "#/components/schemas/BaseResponse"
|
||||||
|
- type: object
|
||||||
properties:
|
properties:
|
||||||
total:
|
data:
|
||||||
type: integer
|
type: array
|
||||||
description: Total number of items
|
items:
|
||||||
page:
|
properties:
|
||||||
type: integer
|
id:
|
||||||
description: Current page number
|
type: string
|
||||||
get:
|
description: Unique identifier for the village
|
||||||
type: integer
|
name:
|
||||||
description: Number of items per page
|
type: string
|
||||||
description: Pagination metadata
|
description: Name of the village
|
||||||
|
isActive:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates whether the village is active
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
description: Timestamp when the village was created
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
description: Timestamp when the village was last updatedØ
|
||||||
|
|
||||||
# Banner
|
# Banner
|
||||||
BannerBase:
|
BannerBase:
|
||||||
@@ -1393,6 +1408,48 @@ components:
|
|||||||
description: Details of a specific user
|
description: Details of a specific user
|
||||||
|
|
||||||
paths:
|
paths:
|
||||||
|
# Village
|
||||||
|
/village:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Village
|
||||||
|
summary: Get list of villages
|
||||||
|
description: Retrieves a paginated list of villages filtered by search term and active status
|
||||||
|
parameters:
|
||||||
|
- name: search
|
||||||
|
in: query
|
||||||
|
description: Search term for village name
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
- name: active
|
||||||
|
in: query
|
||||||
|
description: Filter by active status
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
nullable: true
|
||||||
|
- name: page
|
||||||
|
in: query
|
||||||
|
description: Page number for pagination
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
default: 1
|
||||||
|
- name: get
|
||||||
|
in: query
|
||||||
|
description: Number of items per page
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
default: 10
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: List of villages
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/VillageListResponse"
|
||||||
|
|
||||||
# Announcement
|
# Announcement
|
||||||
/announcement:
|
/announcement:
|
||||||
get:
|
get:
|
||||||
@@ -1420,7 +1477,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -1501,7 +1558,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -1601,7 +1658,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -1695,7 +1752,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -1789,7 +1846,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -1894,7 +1951,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2058,7 +2115,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2112,7 +2169,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2172,7 +2229,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2233,7 +2290,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2335,7 +2392,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2436,7 +2493,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
default: 1
|
default: 1
|
||||||
- name: perPage
|
- name: get
|
||||||
in: query
|
in: query
|
||||||
description: Number of items per page
|
description: Number of items per page
|
||||||
schema:
|
schema:
|
||||||
@@ -2488,6 +2545,8 @@ security:
|
|||||||
- bearerAuth: []
|
- bearerAuth: []
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
|
- name: Village
|
||||||
|
description: Operations related to village management
|
||||||
- name: Announcement
|
- name: Announcement
|
||||||
description: Operations related to announcements
|
description: Operations related to announcements
|
||||||
- name: Banner
|
- name: Banner
|
||||||
|
|||||||
50
src/app/api/ai/village/route.ts
Normal file
50
src/app/api/ai/village/route.ts
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import { prisma } from "@/module/_global";
|
||||||
|
import _ from "lodash";
|
||||||
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export async function GET(request: Request) {
|
||||||
|
try {
|
||||||
|
const { searchParams } = new URL(request.url);
|
||||||
|
const isActive = searchParams.get("active");
|
||||||
|
const search = searchParams.get('search');
|
||||||
|
const page = searchParams.get('page')
|
||||||
|
const get = searchParams.get('get')
|
||||||
|
|
||||||
|
let getFix = 10;
|
||||||
|
if (get == null || get == undefined || get == "" || _.isNaN(Number(get))) {
|
||||||
|
getFix = 10;
|
||||||
|
} else {
|
||||||
|
getFix = Number(get);
|
||||||
|
}
|
||||||
|
|
||||||
|
const dataSkip = page == null || page == undefined ? 0 : Number(page) * getFix - getFix;
|
||||||
|
|
||||||
|
const data = await prisma.village.findMany({
|
||||||
|
skip: dataSkip,
|
||||||
|
take: getFix,
|
||||||
|
where: {
|
||||||
|
isActive: isActive == 'false' ? false : true,
|
||||||
|
name: {
|
||||||
|
contains: (search == undefined || search == null) ? "" : search,
|
||||||
|
mode: "insensitive"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
isActive: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true
|
||||||
|
},
|
||||||
|
orderBy: {
|
||||||
|
name: 'asc'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return NextResponse.json({ success: true, message: "Berhasil mendapatkan desa", data, }, { status: 200 });
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
return NextResponse.json({ success: false, message: "Gagal mendapatkan desa, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
|
|||||||
|
|
||||||
export async function GET(request: Request) {
|
export async function GET(request: Request) {
|
||||||
try {
|
try {
|
||||||
return NextResponse.json({ success: true, version: "2.0.2", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 });
|
return NextResponse.json({ success: true, version: "2.0.3", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });
|
return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });
|
||||||
|
|||||||
Reference in New Issue
Block a user