in space-slack-sync/src/main/kotlin/org/jetbrains/spaceSlackSync/storage/postgres/impl/SlackTeamsStorageImpl.kt [69:105]
override suspend fun createOrUpdate(
teamId: String,
domain: String,
spaceAppClientId: String,
accessToken: ByteArray,
refreshToken: ByteArray,
accessTokenExpiresAt: LocalDateTime
) {
tx {
val teamExists = DB.SlackTeams.select { DB.SlackTeams.id eq teamId }.forUpdate().any()
if (teamExists) {
DB.SlackTeams.update(
where = { DB.SlackTeams.id eq teamId },
body = {
it[DB.SlackTeams.accessToken] = ExposedBlob(accessToken)
it[DB.SlackTeams.accessTokenExpiresAt] = accessTokenExpiresAt
it[DB.SlackTeams.refreshToken] = ExposedBlob(refreshToken)
it[DB.SlackTeams.tokenInvalid] = false
}
)
} else {
DB.SlackTeams.insert {
it[DB.SlackTeams.id] = teamId
it[DB.SlackTeams.domain] = domain
it[DB.SlackTeams.created] = LocalDateTime.now()
it[DB.SlackTeams.accessToken] = ExposedBlob(accessToken)
it[DB.SlackTeams.accessTokenExpiresAt] = accessTokenExpiresAt
it[DB.SlackTeams.refreshToken] = ExposedBlob(refreshToken)
}
}
DB.Slack2Space.insertIgnore {
it[slackTeamId] = teamId
it[DB.Slack2Space.spaceAppClientId] = spaceAppClientId
}
}
}