mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 04:26:43 +00:00
feat: added back missing replica node redirect for read db operations
This commit is contained in:
@@ -46,7 +46,10 @@ export const dynamicSecretLeaseDALFactory = (db: TDbClient) => {
|
|||||||
|
|
||||||
const countLeasesForDynamicSecret = async (dynamicSecretId: string, tx?: Knex) => {
|
const countLeasesForDynamicSecret = async (dynamicSecretId: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const doc = await (tx || db)(TableName.DynamicSecretLease).count("*").where({ dynamicSecretId }).first();
|
const doc = await (tx || db.replicaNode())(TableName.DynamicSecretLease)
|
||||||
|
.count("*")
|
||||||
|
.where({ dynamicSecretId })
|
||||||
|
.first();
|
||||||
return parseInt(doc || "0", 10);
|
return parseInt(doc || "0", 10);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new DatabaseError({ error, name: "DynamicSecretCountLeases" });
|
throw new DatabaseError({ error, name: "DynamicSecretCountLeases" });
|
||||||
@@ -55,7 +58,7 @@ export const dynamicSecretLeaseDALFactory = (db: TDbClient) => {
|
|||||||
|
|
||||||
const findById = async (id: string, tx?: Knex) => {
|
const findById = async (id: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const doc = await (tx || db)(TableName.DynamicSecretLease)
|
const doc = await (tx || db.replicaNode())(TableName.DynamicSecretLease)
|
||||||
.where({ [`${TableName.DynamicSecretLease}.id` as "id"]: id })
|
.where({ [`${TableName.DynamicSecretLease}.id` as "id"]: id })
|
||||||
.first()
|
.first()
|
||||||
.join(
|
.join(
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export const gatewayDALFactory = (db: TDbClient) => {
|
|||||||
{ offset, limit, sort, tx }: TFindOpt<TGateways> = {}
|
{ offset, limit, sort, tx }: TFindOpt<TGateways> = {}
|
||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
const query = (tx || db)(TableName.Gateway)
|
const query = (tx || db.replicaNode())(TableName.Gateway)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
.where(buildFindFilter(filter, TableName.Gateway, ["orgId"]))
|
.where(buildFindFilter(filter, TableName.Gateway, ["orgId"]))
|
||||||
.join(TableName.Identity, `${TableName.Identity}.id`, `${TableName.Gateway}.identityId`)
|
.join(TableName.Identity, `${TableName.Identity}.id`, `${TableName.Gateway}.identityId`)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export const userGroupMembershipDALFactory = (db: TDbClient) => {
|
|||||||
.whereIn(`${TableName.ProjectMembership}.projectId`, projectIds)
|
.whereIn(`${TableName.ProjectMembership}.projectId`, projectIds)
|
||||||
.pluck(`${TableName.ProjectMembership}.projectId`);
|
.pluck(`${TableName.ProjectMembership}.projectId`);
|
||||||
|
|
||||||
const userGroupMemberships: string[] = await (tx || db)(TableName.UserGroupMembership)
|
const userGroupMemberships: string[] = await (tx || db.replicaNode())(TableName.UserGroupMembership)
|
||||||
.where(`${TableName.UserGroupMembership}.userId`, userId)
|
.where(`${TableName.UserGroupMembership}.userId`, userId)
|
||||||
.whereNot(`${TableName.UserGroupMembership}.groupId`, groupId)
|
.whereNot(`${TableName.UserGroupMembership}.groupId`, groupId)
|
||||||
.join(
|
.join(
|
||||||
@@ -79,7 +79,7 @@ export const userGroupMembershipDALFactory = (db: TDbClient) => {
|
|||||||
.pluck(`${TableName.GroupProjectMembership}.groupId`);
|
.pluck(`${TableName.GroupProjectMembership}.groupId`);
|
||||||
|
|
||||||
// main query
|
// main query
|
||||||
const members = await (tx || db)(TableName.UserGroupMembership)
|
const members = await (tx || db.replicaNode())(TableName.UserGroupMembership)
|
||||||
.where(`${TableName.UserGroupMembership}.groupId`, groupId)
|
.where(`${TableName.UserGroupMembership}.groupId`, groupId)
|
||||||
.where(`${TableName.UserGroupMembership}.isPending`, false)
|
.where(`${TableName.UserGroupMembership}.isPending`, false)
|
||||||
.join(TableName.Users, `${TableName.UserGroupMembership}.userId`, `${TableName.Users}.id`)
|
.join(TableName.Users, `${TableName.UserGroupMembership}.userId`, `${TableName.Users}.id`)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export const licenseDALFactory = (db: TDbClient) => {
|
|||||||
const countOrgUsersAndIdentities = async (orgId: string | null, tx?: Knex) => {
|
const countOrgUsersAndIdentities = async (orgId: string | null, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
// count org users
|
// count org users
|
||||||
const userDoc = await (tx || db)(TableName.OrgMembership)
|
const userDoc = await (tx || db.replicaNode())(TableName.OrgMembership)
|
||||||
.where({ status: OrgMembershipStatus.Accepted })
|
.where({ status: OrgMembershipStatus.Accepted })
|
||||||
.andWhere((bd) => {
|
.andWhere((bd) => {
|
||||||
if (orgId) {
|
if (orgId) {
|
||||||
@@ -42,7 +42,7 @@ export const licenseDALFactory = (db: TDbClient) => {
|
|||||||
const userCount = Number(userDoc?.[0].count);
|
const userCount = Number(userDoc?.[0].count);
|
||||||
|
|
||||||
// count org identities
|
// count org identities
|
||||||
const identityDoc = await (tx || db)(TableName.IdentityOrgMembership)
|
const identityDoc = await (tx || db.replicaNode())(TableName.IdentityOrgMembership)
|
||||||
.where((bd) => {
|
.where((bd) => {
|
||||||
if (orgId) {
|
if (orgId) {
|
||||||
void bd.where({ orgId });
|
void bd.where({ orgId });
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ export const secretApprovalRequestDALFactory = (db: TDbClient) => {
|
|||||||
|
|
||||||
const findProjectRequestCount = async (projectId: string, userId: string, policyId?: string, tx?: Knex) => {
|
const findProjectRequestCount = async (projectId: string, userId: string, policyId?: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const docs = await (tx || db)
|
const docs = await (tx || db.replicaNode())
|
||||||
.with(
|
.with(
|
||||||
"temp",
|
"temp",
|
||||||
(tx || db.replicaNode())(TableName.SecretApprovalRequest)
|
(tx || db.replicaNode())(TableName.SecretApprovalRequest)
|
||||||
@@ -494,7 +494,7 @@ export const secretApprovalRequestDALFactory = (db: TDbClient) => {
|
|||||||
.distinctOn(`${TableName.SecretApprovalRequest}.id`)
|
.distinctOn(`${TableName.SecretApprovalRequest}.id`)
|
||||||
.as("inner");
|
.as("inner");
|
||||||
|
|
||||||
const query = (tx || db)
|
const query = (tx || db.replicaNode())
|
||||||
.select("*")
|
.select("*")
|
||||||
.select(db.raw("count(*) OVER() as total_count"))
|
.select(db.raw("count(*) OVER() as total_count"))
|
||||||
.from(innerQuery)
|
.from(innerQuery)
|
||||||
|
|||||||
+1
-1
@@ -377,7 +377,7 @@ export const secretApprovalRequestSecretDALFactory = (db: TDbClient) => {
|
|||||||
// special query for migration to v2 secret
|
// special query for migration to v2 secret
|
||||||
const findByProjectId = async (projectId: string, tx?: Knex) => {
|
const findByProjectId = async (projectId: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const docs = await (tx || db)(TableName.SecretApprovalRequestSecret)
|
const docs = await (tx || db.replicaNode())(TableName.SecretApprovalRequestSecret)
|
||||||
.join(
|
.join(
|
||||||
TableName.SecretApprovalRequest,
|
TableName.SecretApprovalRequest,
|
||||||
`${TableName.SecretApprovalRequest}.id`,
|
`${TableName.SecretApprovalRequest}.id`,
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ export const snapshotDALFactory = (db: TDbClient) => {
|
|||||||
// then joins with respective secrets and folder
|
// then joins with respective secrets and folder
|
||||||
const findRecursivelySnapshots = async (snapshotId: string, tx?: Knex) => {
|
const findRecursivelySnapshots = async (snapshotId: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const data = await (tx || db)
|
const data = await (tx || db.replicaNode())
|
||||||
.withRecursive("parent", (qb) => {
|
.withRecursive("parent", (qb) => {
|
||||||
void qb
|
void qb
|
||||||
.from(TableName.Snapshot)
|
.from(TableName.Snapshot)
|
||||||
@@ -419,7 +419,7 @@ export const snapshotDALFactory = (db: TDbClient) => {
|
|||||||
// then joins with respective secrets and folder
|
// then joins with respective secrets and folder
|
||||||
const findRecursivelySnapshotsV2Bridge = async (snapshotId: string, tx?: Knex) => {
|
const findRecursivelySnapshotsV2Bridge = async (snapshotId: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const data = await (tx || db)
|
const data = await (tx || db.replicaNode())
|
||||||
.withRecursive("parent", (qb) => {
|
.withRecursive("parent", (qb) => {
|
||||||
void qb
|
void qb
|
||||||
.from(TableName.Snapshot)
|
.from(TableName.Snapshot)
|
||||||
@@ -581,7 +581,11 @@ export const snapshotDALFactory = (db: TDbClient) => {
|
|||||||
const docs = await (tx || db.replicaNode())(TableName.Snapshot)
|
const docs = await (tx || db.replicaNode())(TableName.Snapshot)
|
||||||
.where(`${TableName.Snapshot}.folderId`, folderId)
|
.where(`${TableName.Snapshot}.folderId`, folderId)
|
||||||
.join<TSecretSnapshots>(
|
.join<TSecretSnapshots>(
|
||||||
(tx || db)(TableName.Snapshot).groupBy("folderId").max("createdAt").select("folderId").as("latestVersion"),
|
(tx || db.replicaNode())(TableName.Snapshot)
|
||||||
|
.groupBy("folderId")
|
||||||
|
.max("createdAt")
|
||||||
|
.select("folderId")
|
||||||
|
.as("latestVersion"),
|
||||||
(bd) => {
|
(bd) => {
|
||||||
bd.on(`${TableName.Snapshot}.folderId`, "latestVersion.folderId").andOn(
|
bd.on(`${TableName.Snapshot}.folderId`, "latestVersion.folderId").andOn(
|
||||||
`${TableName.Snapshot}.createdAt`,
|
`${TableName.Snapshot}.createdAt`,
|
||||||
@@ -766,7 +770,7 @@ export const snapshotDALFactory = (db: TDbClient) => {
|
|||||||
)
|
)
|
||||||
.orderBy(`${TableName.Snapshot}.createdAt`, "desc")
|
.orderBy(`${TableName.Snapshot}.createdAt`, "desc")
|
||||||
.where(`${TableName.Snapshot}.folderId`, folderId);
|
.where(`${TableName.Snapshot}.folderId`, folderId);
|
||||||
const data = await (tx || db)
|
const data = await (tx || db.replicaNode())
|
||||||
.with("w", query)
|
.with("w", query)
|
||||||
.select("*")
|
.select("*")
|
||||||
.from<Awaited<typeof query>[number]>("w")
|
.from<Awaited<typeof query>[number]>("w")
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const integrationAuthDALFactory = (db: TDbClient) => {
|
|||||||
|
|
||||||
const getByOrg = async (orgId: string, tx?: Knex) => {
|
const getByOrg = async (orgId: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const integrationAuths = await (tx || db)(TableName.IntegrationAuth)
|
const integrationAuths = await (tx || db.replicaNode())(TableName.IntegrationAuth)
|
||||||
.join(TableName.Project, `${TableName.Project}.id`, `${TableName.IntegrationAuth}.projectId`)
|
.join(TableName.Project, `${TableName.Project}.id`, `${TableName.IntegrationAuth}.projectId`)
|
||||||
.join(TableName.Organization, `${TableName.Organization}.id`, `${TableName.Project}.orgId`)
|
.join(TableName.Organization, `${TableName.Organization}.id`, `${TableName.Project}.orgId`)
|
||||||
.where(`${TableName.Organization}.id`, "=", orgId)
|
.where(`${TableName.Organization}.id`, "=", orgId)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export const kmsRootConfigDALFactory = (db: TDbClient) => {
|
|||||||
|
|
||||||
const findById = async (id: string, tx?: Knex) => {
|
const findById = async (id: string, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const result = await (tx || db)(TableName.KmsServerRootConfig)
|
const result = await (tx || db.replicaNode())(TableName.KmsServerRootConfig)
|
||||||
.where({ id } as never)
|
.where({ id } as never)
|
||||||
.first("*");
|
.first("*");
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export const reminderDALFactory = (db: TDbClient) => {
|
|||||||
const findSecretDailyReminders = async (tx?: Knex) => {
|
const findSecretDailyReminders = async (tx?: Knex) => {
|
||||||
const { startOfDay, endOfDay } = getTodayDateRange();
|
const { startOfDay, endOfDay } = getTodayDateRange();
|
||||||
|
|
||||||
const rawReminders = await (tx || db)(TableName.Reminder)
|
const rawReminders = await (tx || db.replicaNode())(TableName.Reminder)
|
||||||
.whereBetween("nextReminderDate", [startOfDay, endOfDay])
|
.whereBetween("nextReminderDate", [startOfDay, endOfDay])
|
||||||
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
||||||
.leftJoin<TUsers>(TableName.Users, `${TableName.ReminderRecipient}.userId`, `${TableName.Users}.id`)
|
.leftJoin<TUsers>(TableName.Users, `${TableName.ReminderRecipient}.userId`, `${TableName.Users}.id`)
|
||||||
@@ -90,7 +90,7 @@ export const reminderDALFactory = (db: TDbClient) => {
|
|||||||
const futureDate = new Date(startOfDay);
|
const futureDate = new Date(startOfDay);
|
||||||
futureDate.setDate(futureDate.getDate() + daysAhead);
|
futureDate.setDate(futureDate.getDate() + daysAhead);
|
||||||
|
|
||||||
const reminders = await (tx || db)(TableName.Reminder)
|
const reminders = await (tx || db.replicaNode())(TableName.Reminder)
|
||||||
.where("nextReminderDate", ">=", startOfDay)
|
.where("nextReminderDate", ">=", startOfDay)
|
||||||
.where("nextReminderDate", "<=", futureDate)
|
.where("nextReminderDate", "<=", futureDate)
|
||||||
.orderBy("nextReminderDate", "asc")
|
.orderBy("nextReminderDate", "asc")
|
||||||
@@ -101,7 +101,7 @@ export const reminderDALFactory = (db: TDbClient) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const findSecretReminder = async (secretId: string, tx?: Knex) => {
|
const findSecretReminder = async (secretId: string, tx?: Knex) => {
|
||||||
const rawReminders = await (tx || db)(TableName.Reminder)
|
const rawReminders = await (tx || db.replicaNode())(TableName.Reminder)
|
||||||
.where(`${TableName.Reminder}.secretId`, secretId)
|
.where(`${TableName.Reminder}.secretId`, secretId)
|
||||||
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
||||||
.select(selectAllTableCols(TableName.Reminder))
|
.select(selectAllTableCols(TableName.Reminder))
|
||||||
@@ -125,7 +125,7 @@ export const reminderDALFactory = (db: TDbClient) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const findSecretReminders = async (secretIds: string[], tx?: Knex) => {
|
const findSecretReminders = async (secretIds: string[], tx?: Knex) => {
|
||||||
const rawReminders = await (tx || db)(TableName.Reminder)
|
const rawReminders = await (tx || db.replicaNode())(TableName.Reminder)
|
||||||
.whereIn(`${TableName.Reminder}.secretId`, secretIds)
|
.whereIn(`${TableName.Reminder}.secretId`, secretIds)
|
||||||
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
||||||
.select(selectAllTableCols(TableName.Reminder))
|
.select(selectAllTableCols(TableName.Reminder))
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export const secretFolderVersionDALFactory = (db: TDbClient) => {
|
|||||||
)
|
)
|
||||||
.whereIn(`${TableName.SecretFolderVersion}.folderId`, folderIds)
|
.whereIn(`${TableName.SecretFolderVersion}.folderId`, folderIds)
|
||||||
.join(
|
.join(
|
||||||
(tx || db)(TableName.SecretFolderVersion)
|
(tx || db.replicaNode())(TableName.SecretFolderVersion)
|
||||||
.groupBy("folderId")
|
.groupBy("folderId")
|
||||||
.max("version")
|
.max("version")
|
||||||
.select("folderId")
|
.select("folderId")
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export const secretImportDALFactory = (db: TDbClient) => {
|
|||||||
// we are using postion based sorting as its a small list
|
// we are using postion based sorting as its a small list
|
||||||
// this will return the last value of the position in a folder with secret imports
|
// this will return the last value of the position in a folder with secret imports
|
||||||
const findLastImportPosition = async (folderId: string, tx?: Knex) => {
|
const findLastImportPosition = async (folderId: string, tx?: Knex) => {
|
||||||
const lastPos = await (tx || db)(TableName.SecretImport)
|
const lastPos = await (tx || db.replicaNode())(TableName.SecretImport)
|
||||||
.where({ folderId })
|
.where({ folderId })
|
||||||
.max("position", { as: "position" })
|
.max("position", { as: "position" })
|
||||||
.first();
|
.first();
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ export const secretSharingDALFactory = (db: TDbClient) => {
|
|||||||
const findActiveSharedSecrets = async (filters: Partial<TSecretSharing>, tx?: Knex) => {
|
const findActiveSharedSecrets = async (filters: Partial<TSecretSharing>, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
return await (tx || db)(TableName.SecretSharing)
|
return await (tx || db.replicaNode())(TableName.SecretSharing)
|
||||||
.where(filters)
|
.where(filters)
|
||||||
.andWhere("expiresAt", ">", now)
|
.andWhere("expiresAt", ">", now)
|
||||||
.andWhere("encryptedValue", "<>", "")
|
.andWhere("encryptedValue", "<>", "")
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => {
|
|||||||
|
|
||||||
const findOne = async (filter: Partial<TSecretsV2>, tx?: Knex) => {
|
const findOne = async (filter: Partial<TSecretsV2>, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
const docs = await (tx || db)(TableName.SecretV2)
|
const docs = await (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
.where(buildFindFilter(filter, TableName.SecretV2))
|
.where(buildFindFilter(filter, TableName.SecretV2))
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
@@ -143,7 +143,7 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => {
|
|||||||
const find = async (filter: TFindFilter<TSecretsV2>, opts: TFindOpt<TSecretsV2> = {}) => {
|
const find = async (filter: TFindFilter<TSecretsV2>, opts: TFindOpt<TSecretsV2> = {}) => {
|
||||||
const { offset, limit, sort, tx } = opts;
|
const { offset, limit, sort, tx } = opts;
|
||||||
try {
|
try {
|
||||||
const query = (tx || db)(TableName.SecretV2)
|
const query = (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
.where(buildFindFilter(filter))
|
.where(buildFindFilter(filter))
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
@@ -887,13 +887,13 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => {
|
|||||||
const findSecretsWithReminderRecipients = async (ids: string[], limit: number, tx?: Knex) => {
|
const findSecretsWithReminderRecipients = async (ids: string[], limit: number, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
// Create a subquery to get limited secret IDs
|
// Create a subquery to get limited secret IDs
|
||||||
const limitedSecretIds = (tx || db)(TableName.SecretV2)
|
const limitedSecretIds = (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
.whereIn(`${TableName.SecretV2}.id`, ids)
|
.whereIn(`${TableName.SecretV2}.id`, ids)
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
.select("id");
|
.select("id");
|
||||||
|
|
||||||
// Join with all recipients for the limited secrets
|
// Join with all recipients for the limited secrets
|
||||||
const docs = await (tx || db)(TableName.SecretV2)
|
const docs = await (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
.whereIn(`${TableName.SecretV2}.id`, limitedSecretIds)
|
.whereIn(`${TableName.SecretV2}.id`, limitedSecretIds)
|
||||||
.leftJoin(TableName.Reminder, `${TableName.SecretV2}.id`, `${TableName.Reminder}.secretId`)
|
.leftJoin(TableName.Reminder, `${TableName.SecretV2}.id`, `${TableName.Reminder}.secretId`)
|
||||||
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
.leftJoin(TableName.ReminderRecipient, `${TableName.Reminder}.id`, `${TableName.ReminderRecipient}.reminderId`)
|
||||||
@@ -925,13 +925,13 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => {
|
|||||||
const findSecretsWithReminderRecipientsOld = async (ids: string[], limit: number, tx?: Knex) => {
|
const findSecretsWithReminderRecipientsOld = async (ids: string[], limit: number, tx?: Knex) => {
|
||||||
try {
|
try {
|
||||||
// Create a subquery to get limited secret IDs
|
// Create a subquery to get limited secret IDs
|
||||||
const limitedSecretIds = (tx || db)(TableName.SecretV2)
|
const limitedSecretIds = (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
.whereIn(`${TableName.SecretV2}.id`, ids)
|
.whereIn(`${TableName.SecretV2}.id`, ids)
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
.select("id");
|
.select("id");
|
||||||
|
|
||||||
// Join with all recipients for the limited secrets
|
// Join with all recipients for the limited secrets
|
||||||
const docs = await (tx || db)(TableName.SecretV2)
|
const docs = await (tx || db.replicaNode())(TableName.SecretV2)
|
||||||
.whereIn(`${TableName.SecretV2}.id`, limitedSecretIds)
|
.whereIn(`${TableName.SecretV2}.id`, limitedSecretIds)
|
||||||
.leftJoin(TableName.Reminder, `${TableName.SecretV2}.id`, `${TableName.Reminder}.secretId`)
|
.leftJoin(TableName.Reminder, `${TableName.SecretV2}.id`, `${TableName.Reminder}.secretId`)
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ export const secretVersionV2BridgeDALFactory = (db: TDbClient) => {
|
|||||||
.where(`${TableName.SecretVersionV2}.folderId`, folderId)
|
.where(`${TableName.SecretVersionV2}.folderId`, folderId)
|
||||||
.join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretVersionV2}.secretId`)
|
.join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretVersionV2}.secretId`)
|
||||||
.join<TSecretVersionsV2, TSecretVersionsV2 & { secretId: string; max: number }>(
|
.join<TSecretVersionsV2, TSecretVersionsV2 & { secretId: string; max: number }>(
|
||||||
(tx || db)(TableName.SecretVersionV2)
|
(tx || db.replicaNode())(TableName.SecretVersionV2)
|
||||||
.where(`${TableName.SecretVersionV2}.folderId`, folderId)
|
.where(`${TableName.SecretVersionV2}.folderId`, folderId)
|
||||||
.groupBy("secretId")
|
.groupBy("secretId")
|
||||||
.max("version")
|
.max("version")
|
||||||
@@ -121,7 +121,7 @@ export const secretVersionV2BridgeDALFactory = (db: TDbClient) => {
|
|||||||
.where("folderId", folderId)
|
.where("folderId", folderId)
|
||||||
.whereIn(`${TableName.SecretVersionV2}.secretId`, secretIds)
|
.whereIn(`${TableName.SecretVersionV2}.secretId`, secretIds)
|
||||||
.join(
|
.join(
|
||||||
(tx || db)(TableName.SecretVersionV2)
|
(tx || db.replicaNode())(TableName.SecretVersionV2)
|
||||||
.groupBy("secretId")
|
.groupBy("secretId")
|
||||||
.max("version")
|
.max("version")
|
||||||
.select("secretId")
|
.select("secretId")
|
||||||
@@ -189,7 +189,7 @@ export const secretVersionV2BridgeDALFactory = (db: TDbClient) => {
|
|||||||
}) => {
|
}) => {
|
||||||
try {
|
try {
|
||||||
const { offset, limit, sort = [["createdAt", "desc"]] } = findOpt;
|
const { offset, limit, sort = [["createdAt", "desc"]] } = findOpt;
|
||||||
const query = (tx || db)(TableName.SecretVersionV2)
|
const query = (tx || db.replicaNode())(TableName.SecretVersionV2)
|
||||||
.leftJoin(TableName.Users, `${TableName.Users}.id`, `${TableName.SecretVersionV2}.userActorId`)
|
.leftJoin(TableName.Users, `${TableName.Users}.id`, `${TableName.SecretVersionV2}.userActorId`)
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
TableName.ProjectMembership,
|
TableName.ProjectMembership,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export const superAdminDALFactory = (db: TDbClient) => {
|
|||||||
const superAdminOrm = ormify(db, TableName.SuperAdmin);
|
const superAdminOrm = ormify(db, TableName.SuperAdmin);
|
||||||
|
|
||||||
const findById = async (id: string, tx?: Knex) => {
|
const findById = async (id: string, tx?: Knex) => {
|
||||||
const config = await (tx || db)(TableName.SuperAdmin)
|
const config = await (tx || db.replicaNode())(TableName.SuperAdmin)
|
||||||
.where(`${TableName.SuperAdmin}.id`, id)
|
.where(`${TableName.SuperAdmin}.id`, id)
|
||||||
.leftJoin(TableName.Organization, `${TableName.SuperAdmin}.defaultAuthOrgId`, `${TableName.Organization}.id`)
|
.leftJoin(TableName.Organization, `${TableName.SuperAdmin}.defaultAuthOrgId`, `${TableName.Organization}.id`)
|
||||||
.leftJoin(TableName.SamlConfig, (qb) => {
|
.leftJoin(TableName.SamlConfig, (qb) => {
|
||||||
|
|||||||
@@ -19,12 +19,16 @@ export type TUserDALFactory = ReturnType<typeof userDALFactory>;
|
|||||||
export const userDALFactory = (db: TDbClient) => {
|
export const userDALFactory = (db: TDbClient) => {
|
||||||
const userOrm = ormify(db, TableName.Users);
|
const userOrm = ormify(db, TableName.Users);
|
||||||
const findUserByUsername = async (username: string, tx?: Knex) =>
|
const findUserByUsername = async (username: string, tx?: Knex) =>
|
||||||
(tx || db)(TableName.Users).whereRaw('lower("username") = :username', { username: username.toLowerCase() });
|
(tx || db.replicaNode())(TableName.Users).whereRaw('lower("username") = :username', {
|
||||||
|
username: username.toLowerCase()
|
||||||
|
});
|
||||||
|
|
||||||
const findUserByEmail = async (email: string, tx?: Knex) =>
|
const findUserByEmail = async (email: string, tx?: Knex) =>
|
||||||
(tx || db)(TableName.Users).whereRaw('lower("email") = :email', { email: email.toLowerCase() }).where({
|
(tx || db.replicaNode())(TableName.Users)
|
||||||
isEmailVerified: true
|
.whereRaw('lower("email") = :email', { email: email.toLowerCase() })
|
||||||
});
|
.where({
|
||||||
|
isEmailVerified: true
|
||||||
|
});
|
||||||
|
|
||||||
const getUsersByFilter = async ({
|
const getUsersByFilter = async ({
|
||||||
limit,
|
limit,
|
||||||
|
|||||||
Reference in New Issue
Block a user