Better map

This commit is contained in:
cracklesparkle
2024-10-29 15:08:23 +09:00
parent 115c6ec417
commit f51835584d
20 changed files with 685 additions and 444 deletions

View File

@ -9,9 +9,9 @@ import cors from 'cors'
import { Coordinate } from './interfaces/map'
import { generateTilesForZoomLevel } from './utils/tiles'
import { query, validationResult } from 'express-validator'
import { Connection, Request as TediousRequest } from 'tedious'
import { Connection, ConnectionConfiguration, Request as TediousRequest } from 'tedious'
const tedious = new Connection({
const tediousConfig: ConnectionConfiguration = {
server: 'localhost',
options: {
trustServerCertificate: true,
@ -25,17 +25,7 @@ const tedious = new Connection({
password: 'oMhthmsvbYHc'
}
}
})
tedious.on('connect', function (err) {
if (err) {
console.log('Error: ', err)
}
console.log('Connected to General')
})
tedious.connect()
}
const prisma = new PrismaClient()
const app = express()
@ -185,33 +175,53 @@ app.get('/tile/:provider/:z/:x/:y', async (req: Request, res: Response) => {
function tediousQuery(query: string) {
// Read all rows from table
const request = new TediousRequest(
query,
(err, rowCount) => {
if (err) {
console.log(`Executing ${query}, ${rowCount} rows.`);
console.error(err.message);
} else {
console.log(`Executing ${query}, ${rowCount} rows.`);
}
}
);
return new Promise((resolve, reject) => {
const result: any = [];
const connection = new Connection(tediousConfig)
request.on("row", (columns) => {
const entry: any = {};
columns.forEach((column: any) => {
entry[column.metadata.colName] = column.value;
connection.on('connect', (err) => {
if (err) {
reject(err)
return
}
const result: any = [];
const request = new TediousRequest(
query,
(err, rowCount) => {
if (err) {
console.log(`Executing ${query}, ${rowCount} rows.`);
console.error(err.message);
} else {
console.log(`Executing ${query}, ${rowCount} rows.`);
}
}
)
request.on("row", (columns) => {
const entry: any = {};
columns.forEach((column: any) => {
entry[column.metadata.colName] = column.value;
});
result.push(entry);
});
result.push(entry);
});
request.on('error', error => reject(error));// some error happened, reject the promise
request.on('requestCompleted', () => resolve(result)); // resolve the promise with the result rows.
request.on('error', error => reject(error));// some error happened, reject the promise
request.on('requestCompleted', () => {
connection.close();
resolve(result)
}); // resolve the promise with the result rows.
tedious.execSql(request);
connection.execSql(request)
})
connection.on('error', (err) => {
reject(err)
})
connection.connect()
});
}
@ -235,16 +245,29 @@ app.get('/general/cities/all', async (req: Request, res: Response) => {
}
})
app.get('/general/types/all', async (req: Request, res: Response) => {
try {
const result = await tediousQuery(
`
SELECT * FROM nGeneral..tTypes
ORDER BY id
`
)
res.status(200).json(result)
} catch (err) {
res.status(500)
}
})
app.get('/general/objects/all', async (req: Request, res: Response) => {
try {
const { offset, limit, city_id, id } = req.query
const { offset, limit, city_id } = req.query
const result = await tediousQuery(
`
SELECT * FROM nGeneral..tObjects
SELECT * FROM nGeneral..vObjects
${city_id ? `WHERE id_city = ${city_id}` : ''}
${id ? `WHERE id = '${id}'` : ''}
ORDER BY id
ORDER BY object_id
OFFSET ${Number(offset) || 0} ROWS
FETCH NEXT ${Number(limit) || 10} ROWS ONLY;
`
@ -255,6 +278,66 @@ app.get('/general/objects/all', async (req: Request, res: Response) => {
}
})
app.get('/general/objects/:id([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})', async (req: Request, res: Response) => {
try {
const { id } = req.params;
const result = await tediousQuery(
`
SELECT * FROM nGeneral..vObjects
${id ? `WHERE object_id = '${id}'` : ''}
`
)
if (Array.isArray(result) && result.length > 0) {
res.status(200).json(result[0])
}
} catch (err) {
res.status(500)
}
})
app.get('/general/values/all', async (req: Request, res: Response) => {
try {
const { object_id } = req.query
if (!object_id) {
res.status(500)
}
const result = await tediousQuery(
`
SELECT * FROM nGeneral..tValues
WHERE id_object = '${object_id}'
`
)
res.status(200).json(result)
} catch (err) {
res.status(500)
}
})
app.get('/general/params/all', async (req: Request, res: Response) => {
try {
const { param_id } = req.query
if (!param_id) {
res.status(500)
}
const result = await tediousQuery(
`
SELECT * FROM nGeneral..tParameters
WHERE id = '${param_id}'
`
)
res.status(200).json(result)
} catch (err) {
res.status(500)
}
})
app.get('/gis/images/all', async (req: Request, res: Response) => {
try {
const { offset, limit, city_id } = req.query