feat: 优化统计信息获取逻辑
All checks were successful
CI Monitor CI/CD / build-image (push) Successful in 23s
CI Monitor CI/CD / deploy (push) Successful in 35s

This commit is contained in:
zhaoyingbo 2024-05-21 06:41:33 +00:00
parent 8f40de1682
commit 6cb7a26ad5
6 changed files with 20 additions and 22 deletions

View File

@ -31,6 +31,7 @@ const getStatisticsInfo = async () => {
const prevWeekInfo = await db.view.getFullStatisticsByWeek( const prevWeekInfo = await db.view.getFullStatisticsByWeek(
getPrevWeekWithYear() getPrevWeekWithYear()
); );
if (!curWeekInfo || !prevWeekInfo) return {};
return { return {
total_count: String(curWeekInfo?.total_count ?? 0), total_count: String(curWeekInfo?.total_count ?? 0),
weekly_count_rate: calculateWeeklyRate( weekly_count_rate: calculateWeeklyRate(
@ -51,12 +52,10 @@ const getStatisticsInfo = async () => {
}; };
const getProjDiffInfo = async () => { const getProjDiffInfo = async () => {
const curWeekInfo = await db.view.getProjStatisticsByWeek( const curWeekInfo =
getWeekTimeWithYear() (await db.view.getProjStatisticsByWeek(getWeekTimeWithYear())) || [];
) || []; const prevWeekInfo =
const prevWeekInfo = await db.view.getProjStatisticsByWeek( (await db.view.getProjStatisticsByWeek(getPrevWeekWithYear())) || [];
getPrevWeekWithYear()
) || [];
const group: { const group: {
project_name: string; project_name: string;

View File

@ -18,23 +18,23 @@ export interface PipelineRecordModel extends RecordModel {
} }
const getOne = (id: string) => const getOne = (id: string) =>
managePb404( managePb404<PipelineRecordModel>(
async () => await pbClient.collection("pipeline").getOne(id) async () => await pbClient.collection("pipeline").getOne(id)
) as Promise<PipelineRecordModel>; );
/** /**
* *
* @param project_id id * @param project_id id
*/ */
const getLatestOne = (project_id: string) => { const getLatestOne = (project_id: string) => {
return managePb404( return managePb404<PipelineRecordModel>(
async () => async () =>
await pbClient await pbClient
.collection("pipeline") .collection("pipeline")
.getFirstListItem(`project_id="${project_id}"`, { .getFirstListItem(`project_id="${project_id}"`, {
sort: "-created_at", sort: "-created_at",
}) })
) as Promise<PipelineRecordModel>; );
}; };
const create = async (data: Partial<PipelineRecordModel>) => const create = async (data: Partial<PipelineRecordModel>) =>

View File

@ -13,9 +13,9 @@ export interface ProjectRecordModel extends RecordModel {
} }
const getOne = (id: string) => const getOne = (id: string) =>
managePb404( managePb404<ProjectRecordModel>(
async () => await pbClient.collection("project").getOne(id) async () => await pbClient.collection("project").getOne(id)
) as Promise<ProjectRecordModel>; );
const getFullList = async () => const getFullList = async () =>
await pbClient.collection("project").getFullList<ProjectRecordModel>(); await pbClient.collection("project").getFullList<ProjectRecordModel>();

View File

@ -11,19 +11,19 @@ export interface UserRecordModel extends RecordModel {
} }
const getOne = (id: string) => const getOne = (id: string) =>
managePb404( managePb404<UserRecordModel>(
async () => await pbClient.collection("user").getOne(id) async () => await pbClient.collection("user").getOne(id)
) as Promise<UserRecordModel>; );
const getOneByUserId = (user_id: number) => { const getOneByUserId = (user_id: number) => {
return managePb404( return managePb404<UserRecordModel>(
async () => async () =>
await pbClient await pbClient
.collection("user") .collection("user")
.getFirstListItem(`user_id="${user_id}"`, { .getFirstListItem(`user_id="${user_id}"`, {
sort: "-created", sort: "-created",
}) })
) as Promise<UserRecordModel>; );
}; };
const create = async (data: Partial<UserRecordModel>) => const create = async (data: Partial<UserRecordModel>) =>

View File

@ -19,21 +19,21 @@ export interface StatisticsPerProjRecordModel extends RecordModel {
} }
const getFullStatisticsByWeek = (week: string) => { const getFullStatisticsByWeek = (week: string) => {
return managePb404( return managePb404<StatisticsPerWeekRecordModel>(
async () => async () =>
await pbClient await pbClient
.collection("statisticsPerWeek") .collection("statisticsPerWeek")
.getFirstListItem(`week="${week}"`) .getFirstListItem(`week="${week}"`)
) as Promise<StatisticsPerWeekRecordModel>; );
}; };
const getProjStatisticsByWeek = (week: string) => { const getProjStatisticsByWeek = (week: string) => {
return managePb404( return managePb404<StatisticsPerProjRecordModel[]>(
async () => async () =>
await pbClient await pbClient
.collection("statisticsPerProj") .collection("statisticsPerProj")
.getFullList({ filter: `week="${week}"` }) .getFullList({ filter: `week="${week}"` })
) as Promise<StatisticsPerProjRecordModel[]>; );
}; };
const view = { const view = {

View File

@ -1,8 +1,7 @@
export const managePb404 = async (dbFunc: Function) => { export const managePb404 = async <T>(dbFunc: Function): Promise<T | null> => {
try { try {
return await dbFunc(); return await dbFunc();
} catch (err: any) { } catch (err: any) {
// 没有这个提醒就返回空
if (err?.message === "The requested resource wasn't found.") { if (err?.message === "The requested resource wasn't found.") {
return null; return null;
} else throw err; } else throw err;