School Level Search
unknown
typescript
3 years ago
2.4 kB
6
Indexable
import { ClientBase } from 'pg';
import { Request, Response } from 'lambda-api';
import { failure, success } from '../../../shared/libs/response';
import { SchoolLevelModel } from '../../../shared/models/school-level.model';
import { getAuth } from '../../../shared/libs/auth';
import code from '../../../shared/libs/code';
async function querySearchSchoolLevel(
db: ClientBase,
tenantUuid: string,
params: any
): Promise<SchoolLevelModel> {
try {
let filterQueryIndex = 1;
const filteredColumn = {
school_level_id: 'school_level.school_level_id',
school_level_name: 'school_level.school_level_name',
};
const queryStrings = [];
const queryValues = [];
for (const key in filteredColumn) {
if (Object.prototype.hasOwnProperty.call(filteredColumn, key)) {
const value = filteredColumn[key];
if (!params[key] || params[key] === 'null' || params[key] === 'undefined') {
continue;
}
queryStrings.push(`AND ${value} = $${++filterQueryIndex}`);
queryValues.push(params[key] || null);
}
}
const queryResult = await db.query(
`
SELECT school_level.school_level_id,
school_level.school_level_name,
school_level.school_level_description,
school_level.school_level_uuid
FROM school_level
WHERE school_level.tenant_uuid = $1
AND school_level.deleted_at IS NULL
${queryStrings.join(' ')}
ORDER BY school_level.school_level_id`,
[tenantUuid, ...queryValues]
);
if (queryResult.rows.length === 0) {
return null;
}
return queryResult.rows[0];
} catch (e) {
console.error('[ERROR-QUERY] - func: querySearchSchoolLevel', e);
throw Error(code.database_error);
}
}
export default async function schoolLevelSearch(req: Request, res: Response): Promise<any> {
try {
const auth = getAuth(req);
const param = req.body;
const schoolLevel = await querySearchSchoolLevel(req.namespace.db, auth.tenant_uuid, param);
success(res, {
status: true,
version: req.version,
message: 'success',
data: schoolLevel,
meta: null,
});
} catch (e) {
failure(res, e);
}
}
Editor is loading...