This commit is contained in:
cracklesparkle
2024-12-06 12:42:34 +09:00
parent bd0a317e76
commit e9595f9703
16 changed files with 770 additions and 390 deletions

View File

@ -62,17 +62,17 @@ router.get('/objects/list', async (req: Request, res: Response) => {
if (type) {
const result = await tediousQuery(
`
SELECT
SELECT
*
FROM
FROM
vObjects
WHERE
vObjects.id_city = ${city_id}
WHERE
vObjects.id_city = ${city_id}
AND vObjects.year = ${year}
AND type = ${type}
AND
(
CASE
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
@ -91,12 +91,12 @@ router.get('/objects/list', async (req: Request, res: Response) => {
COUNT(vObjects.type) AS count
FROM
vObjects
JOIN
JOIN
tTypes ON vObjects.type = tTypes.id
WHERE
vObjects.id_city = ${city_id} AND vObjects.year = ${year}
AND
(
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
@ -144,7 +144,17 @@ router.get('/values/all', async (req: Request, res: Response) => {
const result = await tediousQuery(
`
SELECT * FROM nGeneral..tValues
SELECT
id_object,
id_param,
CAST(v.value AS varchar(max)) AS value,
date_s,
date_po,
id_user
FROM
nGeneral..tValues v
JOIN
nGeneral..tParameters p ON v.id_param = p.id
WHERE id_object = '${object_id}'
`
)
@ -176,10 +186,21 @@ router.get('/params/all', async (req: Request, res: Response) => {
}
})
const tcbParamQuery = (vtable: string, id_city: string) => {
switch (vtable) {
case 'vStreets':
return `SELECT * FROM nGeneral..${vtable} WHERE id_city = ${id_city};`
case 'vBoilers':
return `SELECT * FROM nGeneral..${vtable} WHERE id_city = ${id_city};`
default:
return `SELECT * FROM nGeneral..${vtable};`
}
}
// Get value from TCB parameter
router.get('/params/tcb', async (req: Request, res: Response) => {
try {
const { vtable, id, offset, limit } = req.query
const { vtable, id, offset, limit, id_city } = req.query
if (!vtable) {
res.status(500)
@ -195,12 +216,13 @@ router.get('/params/tcb', async (req: Request, res: Response) => {
res.status(200).json(result)
} else {
const result = await tediousQuery(
`
SELECT * FROM nGeneral..${vtable}
ORDER BY object_id
OFFSET ${Number(offset) || 0} ROWS
FETCH NEXT ${Number(limit) || 10} ROWS ONLY;
`
// `
// SELECT * FROM nGeneral..${vtable}
// ORDER BY id
// OFFSET ${Number(offset) || 0} ROWS
// FETCH NEXT ${Number(limit) || 10} ROWS ONLY;
// `
tcbParamQuery(vtable as string, id_city as string)
)
res.status(200).json(result)
}
@ -209,4 +231,47 @@ 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
if (q && id_city && year) {
const result = await tediousQuery(
`
WITH RankedValues AS (
SELECT
id_object,
date_s,
CAST(value AS varchar(max)) AS value,
ROW_NUMBER() OVER (PARTITION BY id_object ORDER BY date_s DESC) AS rn,
o.id_city AS id_city,
o.year AS year
FROM nGeneral..tValues
JOIN nGeneral..tObjects o ON o.id = id_object
WHERE CAST(value AS varchar(max)) LIKE '%${q}%'
)
SELECT
id_object,
date_s,
value,
id_city,
year
FROM RankedValues
WHERE rn = 1 AND id_city = ${id_city} AND year = ${year};
`
)
res.status(200).json(result)
} else {
res.status(400).json("Bad request")
}
} catch (err) {
res.status(500).json({
message: "Error",
error: err
})
}
})
export default router