MNTOR-1859 - expose stats API, starting with scans (#3280)
* MNTOR-1859 - expose stats API, starting with scans - monthly quota - current scan count
This commit is contained in:
Родитель
35745c090c
Коммит
d0b29c2046
|
@ -138,3 +138,6 @@ PREMIUM_ENABLED=
|
||||||
# Link to start user on the subscription process. PREMIUM_ENABLED must be set to `true`.
|
# Link to start user on the subscription process. PREMIUM_ENABLED must be set to `true`.
|
||||||
PREMIUM_PRODUCT_ID=prod_NErZh679W62lai
|
PREMIUM_PRODUCT_ID=prod_NErZh679W62lai
|
||||||
PREMIUM_PLAN_ID_US=price_1MUNq0Kb9q6OnNsL4BoJgepf
|
PREMIUM_PLAN_ID_US=price_1MUNq0Kb9q6OnNsL4BoJgepf
|
||||||
|
|
||||||
|
MONTHLY_SCANS_QUOTA=
|
||||||
|
STATS_TOKEN=
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
import { getScansCount } from "../../../../db/tables/onerep_scans";
|
||||||
|
import { bearerToken } from "../../utils/auth";
|
||||||
|
|
||||||
|
export async function GET(req: NextRequest) {
|
||||||
|
const headerToken = bearerToken(req);
|
||||||
|
if (headerToken !== process.env.STATS_TOKEN) {
|
||||||
|
return NextResponse.json({ success: "false" }, { status: 401 });
|
||||||
|
}
|
||||||
|
|
||||||
|
const monthlyQuota = process.env.MONTHLY_SCANS_QUOTA;
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
|
||||||
|
|
||||||
|
const result = await getScansCount(
|
||||||
|
firstDayOfMonth.toDateString(),
|
||||||
|
now.toDateString()
|
||||||
|
);
|
||||||
|
const scansCount = result[0]["count"];
|
||||||
|
|
||||||
|
const message = {
|
||||||
|
monthlyQuota,
|
||||||
|
scansCount,
|
||||||
|
};
|
||||||
|
|
||||||
|
return NextResponse.json({ success: true, message }, { status: 200 });
|
||||||
|
}
|
|
@ -83,10 +83,17 @@ async function setOnerepScanResults(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getScansCount(startDate: string, endDate: string) {
|
||||||
|
return await knex("onerep_scans")
|
||||||
|
.count("id")
|
||||||
|
.whereBetween("created_at", [startDate, endDate]);
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getLatestOnerepScan,
|
getLatestOnerepScan,
|
||||||
getOnerepScanResults,
|
getOnerepScanResults,
|
||||||
setOnerepProfileId,
|
setOnerepProfileId,
|
||||||
setOnerepScan,
|
setOnerepScan,
|
||||||
setOnerepScanResults,
|
setOnerepScanResults,
|
||||||
|
getScansCount,
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче