Change logic for qrs gettings
This commit is contained in:
parent
00afbd266d
commit
d5d659811d
@ -6,29 +6,30 @@ import ru.vyatsu.models.QrCode
|
|||||||
import java.time.ZoneOffset
|
import java.time.ZoneOffset
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
private const val GET_QRS_BY_DOOR_IDS =
|
private const val GET_ACTUAL_QRS_BY_UNIT_ID = """
|
||||||
"SELECT key_code, door_id, start_date_time, end_date_time FROM qrs WHERE door_id IN (?)"
|
SELECT q.start_date_time, q.end_date_time, q.door_id, q.key_code FROM qrs q
|
||||||
|
JOIN doors d ON (d.id = q.door_id)
|
||||||
|
JOIN oauth2_authorized_client c ON (c.client_registration_id = d.unit_id AND c.principal_name = d.principal_name)
|
||||||
|
WHERE c.client_registration_id = ? AND q.start_date_time <= CURRENT_TIMESTAMP AND q.end_date_time >= CURRENT_TIMESTAMP
|
||||||
|
"""
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
class QrRepository(private val template: JdbcTemplate) {
|
class QrRepository(private val template: JdbcTemplate) {
|
||||||
|
|
||||||
fun getActualQrCodesByDoorIds(doorIds: Array<String>): List<QrCode> {
|
fun getActualQrCodesByUnitId(unitId: UUID): List<QrCode> {
|
||||||
return when {
|
val query = GET_ACTUAL_QRS_BY_UNIT_ID.trimIndent()
|
||||||
doorIds.isNotEmpty() -> template.query({ conn ->
|
return template.query({ conn ->
|
||||||
val doorIdsDbArray = conn.createArrayOf("TEXT", doorIds)
|
val stmt = conn.prepareStatement(query)
|
||||||
val stmt = conn.prepareStatement(GET_QRS_BY_DOOR_IDS)
|
stmt.setString(1, unitId.toString())
|
||||||
stmt.setArray(1, doorIdsDbArray)
|
stmt
|
||||||
stmt
|
}, { rs, _ ->
|
||||||
}, { rs, _ ->
|
QrCode(
|
||||||
QrCode(
|
rs.getTimestamp("start_date_time").toLocalDateTime().atOffset(ZoneOffset.UTC),
|
||||||
rs.getTimestamp("start_date_time").toLocalDateTime().atOffset(ZoneOffset.UTC),
|
rs.getTimestamp("end_date_time").toLocalDateTime().atOffset(ZoneOffset.UTC),
|
||||||
rs.getTimestamp("end_date_time").toLocalDateTime().atOffset(ZoneOffset.UTC),
|
UUID.fromString(rs.getString("door_id")),
|
||||||
UUID.fromString(rs.getString("door_id")),
|
UUID.fromString(rs.getString("key_code"))
|
||||||
UUID.fromString(rs.getString("key_code"))
|
)
|
||||||
)
|
})
|
||||||
})
|
|
||||||
|
|
||||||
else -> listOf()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -3,13 +3,13 @@ package ru.vyatsu.qr_access_api.service
|
|||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import ru.vyatsu.models.QrCode
|
import ru.vyatsu.models.QrCode
|
||||||
import ru.vyatsu.qr_access_api.repository.QrRepository
|
import ru.vyatsu.qr_access_api.repository.QrRepository
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
class QrSyncService(val qrRepository: QrRepository) {
|
class QrSyncService(val qrRepository: QrRepository) {
|
||||||
fun getQrCodes(): List<QrCode> {
|
fun getQrCodes(): List<QrCode> {
|
||||||
// TODO: Тут логика с извлечением клайма из jwt в котором идентификатор клиента лежит
|
// TODO: Тут логика с извлечением клайма из jwt в котором идентификатор клиента лежит
|
||||||
val extractedDoorIds = arrayOf("945c8621-9adc-4a49-bc56-10253d27c581", "4dbf27d7-df77-493d-b970-67f8a5178eb9")
|
val extractedUnitId = UUID.fromString("945c8621-9adc-4a49-bc56-10253d27c581")
|
||||||
// TODO: Переделать на передачу unitId и извлечь из бд unit и двери, которые ему принадлежат
|
return qrRepository.getActualQrCodesByUnitId(extractedUnitId)
|
||||||
return qrRepository.getActualQrCodesByDoorIds(extractedDoorIds)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user