Merge pull request 'join' (#51) from join into staging
Reviewed-on: bip/sistem-desa-mandiri#51
This commit is contained in:
@@ -33,19 +33,34 @@ components:
|
||||
message:
|
||||
type: string
|
||||
description: Response message or error description
|
||||
meta:
|
||||
type: object
|
||||
|
||||
# Village
|
||||
VillageListResponse:
|
||||
allOf:
|
||||
- $ref: "#/components/schemas/BaseResponse"
|
||||
- type: object
|
||||
properties:
|
||||
total:
|
||||
type: integer
|
||||
description: Total number of items
|
||||
page:
|
||||
type: integer
|
||||
description: Current page number
|
||||
get:
|
||||
type: integer
|
||||
description: Number of items per page
|
||||
description: Pagination metadata
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
description: Unique identifier for the village
|
||||
name:
|
||||
type: string
|
||||
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
|
||||
BannerBase:
|
||||
@@ -1393,6 +1408,48 @@ components:
|
||||
description: Details of a specific user
|
||||
|
||||
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:
|
||||
get:
|
||||
@@ -1420,7 +1477,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -1501,7 +1558,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -1601,7 +1658,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -1695,7 +1752,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -1789,7 +1846,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -1894,7 +1951,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2058,7 +2115,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2112,7 +2169,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2172,7 +2229,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2233,7 +2290,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2335,7 +2392,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2436,7 +2493,7 @@ paths:
|
||||
type: integer
|
||||
minimum: 1
|
||||
default: 1
|
||||
- name: perPage
|
||||
- name: get
|
||||
in: query
|
||||
description: Number of items per page
|
||||
schema:
|
||||
@@ -2488,6 +2545,8 @@ security:
|
||||
- bearerAuth: []
|
||||
|
||||
tags:
|
||||
- name: Village
|
||||
description: Operations related to village management
|
||||
- name: Announcement
|
||||
description: Operations related to announcements
|
||||
- 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) {
|
||||
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) {
|
||||
console.error(error);
|
||||
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