nestjs rewrite

This commit is contained in:
popovspiridon99
2025-08-01 11:08:33 +09:00
parent 1f9a3a8e03
commit 145827ab6d
28 changed files with 1220 additions and 623 deletions

View File

@ -3,6 +3,7 @@ import { tediousQuery } from '../../utils/tedious';
import { GeneralDB, GisDB } from '../../constants/db';
const router = express.Router()
// ✅
router.get('/regions/all', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(
@ -16,6 +17,7 @@ router.get('/regions/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/districts/all', async (req: Request, res: Response) => {
try {
const { region_id } = req.query
@ -34,6 +36,7 @@ router.get('/districts/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/cities/all', async (req: Request, res: Response) => {
try {
const { offset, limit, search, id } = req.query
@ -54,6 +57,7 @@ router.get('/cities/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/types/all', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(
@ -68,6 +72,7 @@ router.get('/types/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/objects/all', async (req: Request, res: Response) => {
try {
const { offset, limit, city_id } = req.query
@ -87,31 +92,13 @@ router.get('/objects/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/objects/list', async (req: Request, res: Response) => {
try {
const { city_id, year, planning, type } = req.query
if (type) {
const result = await tediousQuery(
// `
// SELECT
// *
// FROM
// vObjects
// WHERE
// vObjects.id_city = ${city_id}
// AND vObjects.year = ${year}
// AND type = ${type}
// AND
// (
// CASE
// WHEN TRY_CAST(vObjects.planning AS BIT) IS NOT NULL THEN TRY_CAST(vObjects.planning AS BIT)
// WHEN vObjects.planning = 'TRUE' THEN 1
// WHEN vObjects.planning = 'FALSE' THEN 0
// ELSE NULL
// END
// ) = ${planning};
// `
`
WITH cte_split(type_id, split_value, caption_params) AS
(
@ -226,6 +213,7 @@ router.get('/objects/:id([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F
}
})
// ✅
router.get('/values/all', async (req: Request, res: Response) => {
try {
const { object_id } = req.query
@ -257,6 +245,7 @@ router.get('/values/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/params/all', async (req: Request, res: Response) => {
try {
const { param_id } = req.query
@ -289,6 +278,7 @@ const tcbParamQuery = (vtable: string, id_city: string) => {
}
}
// ✅
// Get value from TCB parameter
router.get('/params/tcb', async (req: Request, res: Response) => {
try {
@ -323,6 +313,7 @@ router.get('/params/tcb', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/search/objects', async (req: Request, res: Response) => {
try {
const { q, id_city, year } = req.query

View File

@ -2,8 +2,22 @@ import express, { Request, Response } from 'express';
import { tediousQuery } from '../../utils/tedious';
import { GeneralDB, GisDB } from '../../constants/db';
import { pgQuery } from '../../utils/postgres';
const router = express.Router()
router.get('/migrate/lines', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(
`
SELECT * FROM ${GisDB}..lines
`
)
} catch (error) {
res.status(500)
}
})
// ✅
router.get('/type-roles', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(
@ -17,13 +31,15 @@ router.get('/type-roles', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/bounds/:entity_type', async (req: Request, res: Response) => {
try {
const { entity_type } = req.params
const result = await pgQuery(
`
SELECT * FROM bounds
SELECT entity_id, entity_type, ST_AsGeoJSON(geometry)::JSON AS geometry FROM bounds
WHERE entity_type = $1
`,
[entity_type]
@ -31,7 +47,7 @@ router.get('/bounds/:entity_type', async (req: Request, res: Response) => {
if (Array.isArray(result)) {
if (result.length > 0) {
const geometries = result.map((bound: { id: number, entity_id: number, entity_type: string, geometry: JSON, published_at: string, deleted_at: string | null }) => {
const geometries = result.map((bound: { id: string, entity_id: number, entity_type: string, geometry: JSON, published_at: string, deleted_at: string | null }) => {
return {
...bound.geometry,
properties: {
@ -54,14 +70,15 @@ router.get('/bounds/:entity_type', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/bounds/:entity_type/:entity_id', async (req: Request, res: Response) => {
try {
const { entity_type, entity_id } = req.params
const result = await pgQuery(
`
SELECT * FROM bounds
WHERE entity_type = $1
SELECT entity_id, entity_type, ST_AsGeoJSON(geometry)::JSON AS geometry FROM bounds
WHERE entity_type = $1
AND entity_id = $2
`,
[entity_type, entity_id]
@ -81,6 +98,7 @@ router.get('/bounds/:entity_type/:entity_id', async (req: Request, res: Response
}
})
// ✅
router.get('/images/all', async (req: Request, res: Response) => {
try {
const { offset, limit, city_id } = req.query
@ -100,7 +118,7 @@ router.get('/images/all', async (req: Request, res: Response) => {
}
})
// ✅
// Get figures by year and city id
router.get('/figures/all', async (req: Request, res: Response) => {
try {
@ -121,6 +139,7 @@ router.get('/figures/all', async (req: Request, res: Response) => {
}
})
// ✅
// Get lines by year and city id
router.get('/lines/all', async (req: Request, res: Response) => {
try {
@ -138,6 +157,7 @@ router.get('/lines/all', async (req: Request, res: Response) => {
}
})
// ✅
router.get('/regions/borders', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(