Skip to content

Documentation


Documentation / @kizami/db / linkSlackUser

Function: linkSlackUser()

linkSlackUser(db, input): Promise<{ linkedAt: number; slackUserId: string; tenantId: string; userId: string; }>

Defined in: packages/db/src/queries/slack.ts:115

Slackユーザーとkizamiユーザーの連携を作成する(/punch link で発行したトークンの確定時に呼ぶ)。

このテーブルは2つのUNIQUE制約(PK (tenant_id, slack_user_id) と UNIQUE(tenant_id, user_id))を 同時に満たす必要があり、onConflictDoUpdate は一方のターゲットしか指定できないため使えない (例: 既に別のkizamiユーザーに連携済みのSlackアカウントを新しいユーザーが再連携しようとした場合、 PK 側の競合は解決できても user_id 側のUNIQUE制約には触れられない)。そのため、事前に 「同じslack_user_id」または「同じuser_id」を持つ既存行をすべて削除してから挿入する (依頼: 1人が複数のSlackアカウントを紐付けない → 再連携は「最後に確定した組が勝つ」)。 トランザクションで行うのは削除と挿入の間に他のリクエストが割り込んで一時的に制約違反の 状態になるのを避けるため。

Parameters

db

Database

input

LinkSlackUserInput

Returns

Promise<{ linkedAt: number; slackUserId: string; tenantId: string; userId: string; }>