feat(integrations): add kind-aware helpers for workspace/user connections

This commit is contained in:
Philipinho
2026-05-23 02:02:35 +01:00
parent d53054a267
commit 7e1bef8b7e
@@ -35,6 +35,7 @@ export class IntegrationConnectionRepo {
.selectAll()
.where('integrationId', '=', integrationId)
.where('userId', '=', userId)
.where('kind', '=', 'workspace')
.executeTakeFirst();
}
@@ -57,6 +58,7 @@ export class IntegrationConnectionRepo {
.where('integrations.type', '=', integrationType)
.where('integrations.deletedAt', 'is', null)
.where('integrationConnections.userId', '=', userId)
.where('integrationConnections.kind', '=', 'workspace')
.executeTakeFirst();
}
@@ -158,6 +160,7 @@ export class IntegrationConnectionRepo {
.where('refreshToken', 'is not', null)
.where('tokenExpiresAt', 'is not', null)
.where('tokenExpiresAt', '<', threshold)
.where('kind', '=', 'workspace')
.execute();
}
@@ -171,4 +174,46 @@ export class IntegrationConnectionRepo {
.where('integrationId', '=', integrationId)
.execute();
}
async findWorkspaceConnection(
integrationId: string,
trx?: KyselyTransaction,
): Promise<IntegrationConnection | undefined> {
const db = dbOrTx(this.db, trx);
return db
.selectFrom('integrationConnections')
.selectAll()
.where('integrationId', '=', integrationId)
.where('kind', '=', 'workspace')
.executeTakeFirst();
}
async findUserLink(
integrationId: string,
providerUserId: string,
trx?: KyselyTransaction,
): Promise<IntegrationConnection | undefined> {
const db = dbOrTx(this.db, trx);
return db
.selectFrom('integrationConnections')
.selectAll()
.where('integrationId', '=', integrationId)
.where('providerUserId', '=', providerUserId)
.where('kind', '=', 'user')
.executeTakeFirst();
}
async deleteUserLink(
integrationId: string,
userId: string,
trx?: KyselyTransaction,
): Promise<void> {
const db = dbOrTx(this.db, trx);
await db
.deleteFrom('integrationConnections')
.where('integrationId', '=', integrationId)
.where('userId', '=', userId)
.where('kind', '=', 'user')
.execute();
}
}