feat: updated more types to avoid infer

This commit is contained in:
=
2025-06-13 23:52:40 +05:30
parent 5311daed64
commit 7a00ade119
125 changed files with 1974 additions and 571 deletions
@@ -1,7 +1,7 @@
import { TDbClient } from "@app/db";
import { TableName } from "@app/db/schemas";
import { ormify } from "@app/lib/knex";
import { ormify, TOrmify } from "@app/lib/knex";
export type TRateLimitDALFactory = ReturnType<typeof rateLimitDALFactory>;
export type TRateLimitDALFactory = TOrmify<TableName.RateLimit>;
export const rateLimitDALFactory = (db: TDbClient) => ormify(db, TableName.RateLimit, {});
export const rateLimitDALFactory = (db: TDbClient): TRateLimitDALFactory => ormify(db, TableName.RateLimit, {});
@@ -4,7 +4,7 @@ import { logger } from "@app/lib/logger";
import { TLicenseServiceFactory } from "../license/license-service";
import { TRateLimitDALFactory } from "./rate-limit-dal";
import { RateLimitConfiguration, TRateLimit, TRateLimitUpdateDTO } from "./rate-limit-types";
import { RateLimitConfiguration, TRateLimit, TRateLimitServiceFactory } from "./rate-limit-types";
let rateLimitMaxConfiguration: RateLimitConfiguration = {
readLimit: 60,
@@ -27,12 +27,13 @@ type TRateLimitServiceFactoryDep = {
licenseService: Pick<TLicenseServiceFactory, "onPremFeatures">;
};
export type TRateLimitServiceFactory = ReturnType<typeof rateLimitServiceFactory>;
export const rateLimitServiceFactory = ({ rateLimitDAL, licenseService }: TRateLimitServiceFactoryDep) => {
export const rateLimitServiceFactory = ({
rateLimitDAL,
licenseService
}: TRateLimitServiceFactoryDep): TRateLimitServiceFactory => {
const DEFAULT_RATE_LIMIT_CONFIG_ID = "00000000-0000-0000-0000-000000000000";
const getRateLimits = async (): Promise<TRateLimit | undefined> => {
const getRateLimits: TRateLimitServiceFactory["getRateLimits"] = async () => {
let rateLimit: TRateLimit;
try {
@@ -51,11 +52,11 @@ export const rateLimitServiceFactory = ({ rateLimitDAL, licenseService }: TRateL
}
};
const updateRateLimit = async (updates: TRateLimitUpdateDTO): Promise<TRateLimit> => {
const updateRateLimit: TRateLimitServiceFactory["updateRateLimit"] = async (updates) => {
return rateLimitDAL.updateById(DEFAULT_RATE_LIMIT_CONFIG_ID, updates);
};
const syncRateLimitConfiguration = async () => {
const syncRateLimitConfiguration: TRateLimitServiceFactory["syncRateLimitConfiguration"] = async () => {
try {
const rateLimit = await getRateLimits();
if (rateLimit) {
@@ -78,7 +79,7 @@ export const rateLimitServiceFactory = ({ rateLimitDAL, licenseService }: TRateL
}
};
const initializeBackgroundSync = async () => {
const initializeBackgroundSync: TRateLimitServiceFactory["initializeBackgroundSync"] = async () => {
if (!licenseService.onPremFeatures.customRateLimits) {
logger.info("Current license does not support custom rate limit configuration");
return;
@@ -1,3 +1,5 @@
import { CronJob } from "cron";
export type TRateLimitUpdateDTO = {
readRateLimit: number;
writeRateLimit: number;
@@ -23,3 +25,10 @@ export type RateLimitConfiguration = {
inviteUserRateLimit: number;
mfaRateLimit: number;
};
export type TRateLimitServiceFactory = {
getRateLimits: () => Promise<TRateLimit | undefined>;
updateRateLimit: (updates: TRateLimitUpdateDTO) => Promise<TRateLimit>;
initializeBackgroundSync: () => Promise<CronJob<null, null> | undefined>;
syncRateLimitConfiguration: () => Promise<void>;
};