mirror of
https://github.com/revanced/revanced-api.git
synced 2025-04-29 22:24:31 +02:00
fix: Finish DB Model to API model transformation inside transaction
This commit is contained in:
parent
1ca9952de8
commit
89a577e91a
@ -1,6 +1,8 @@
|
|||||||
package app.revanced.api.configuration.repository
|
package app.revanced.api.configuration.repository
|
||||||
|
|
||||||
import app.revanced.api.configuration.schema.APIAnnouncement
|
import app.revanced.api.configuration.schema.APIAnnouncement
|
||||||
|
import app.revanced.api.configuration.schema.APIResponseAnnouncement
|
||||||
|
import app.revanced.api.configuration.schema.APIResponseAnnouncementId
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.awaitAll
|
import kotlinx.coroutines.awaitAll
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
@ -41,11 +43,11 @@ internal class AnnouncementRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun all() = transaction {
|
suspend fun all() = transaction {
|
||||||
Announcement.all()
|
Announcement.all().map { it.toApi() }
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun all(channel: String) = transaction {
|
suspend fun all(channel: String) = transaction {
|
||||||
Announcement.find { Announcements.channel eq channel }
|
Announcement.find { Announcements.channel eq channel }.map { it.toApi() }
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun delete(id: Int) = transaction {
|
suspend fun delete(id: Int) = transaction {
|
||||||
@ -66,13 +68,13 @@ internal class AnnouncementRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun latest() = latestAnnouncement
|
fun latest() = latestAnnouncement?.toApi()
|
||||||
|
|
||||||
fun latest(channel: String) = latestAnnouncementByChannel[channel]
|
fun latest(channel: String) = latestAnnouncementByChannel[channel]?.toApi()
|
||||||
|
|
||||||
fun latestId() = latest()?.id?.value
|
fun latestId() = latest()?.id?.toApi()
|
||||||
|
|
||||||
fun latestId(channel: String) = latest(channel)?.id?.value
|
fun latestId(channel: String) = latest(channel)?.id?.toApi()
|
||||||
|
|
||||||
suspend fun archive(
|
suspend fun archive(
|
||||||
id: Int,
|
id: Int,
|
||||||
@ -172,4 +174,18 @@ internal class AnnouncementRepository {
|
|||||||
var url by Attachments.url
|
var url by Attachments.url
|
||||||
var announcement by Announcement referencedOn Attachments.announcement
|
var announcement by Announcement referencedOn Attachments.announcement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Announcement.toApi() = APIResponseAnnouncement(
|
||||||
|
id.value,
|
||||||
|
author,
|
||||||
|
title,
|
||||||
|
content,
|
||||||
|
attachments.map { it.url },
|
||||||
|
channel,
|
||||||
|
createdAt,
|
||||||
|
archivedAt,
|
||||||
|
level,
|
||||||
|
)
|
||||||
|
|
||||||
|
private fun Int.toApi() = APIResponseAnnouncementId(this)
|
||||||
}
|
}
|
||||||
|
@ -2,21 +2,20 @@ package app.revanced.api.configuration.services
|
|||||||
|
|
||||||
import app.revanced.api.configuration.repository.AnnouncementRepository
|
import app.revanced.api.configuration.repository.AnnouncementRepository
|
||||||
import app.revanced.api.configuration.schema.APIAnnouncement
|
import app.revanced.api.configuration.schema.APIAnnouncement
|
||||||
import app.revanced.api.configuration.schema.APIResponseAnnouncement
|
|
||||||
import app.revanced.api.configuration.schema.APIResponseAnnouncementId
|
import app.revanced.api.configuration.schema.APIResponseAnnouncementId
|
||||||
import kotlinx.datetime.LocalDateTime
|
import kotlinx.datetime.LocalDateTime
|
||||||
|
|
||||||
internal class AnnouncementService(
|
internal class AnnouncementService(
|
||||||
private val announcementRepository: AnnouncementRepository,
|
private val announcementRepository: AnnouncementRepository,
|
||||||
) {
|
) {
|
||||||
fun latestId(channel: String): APIResponseAnnouncementId? = announcementRepository.latestId(channel)?.toApi()
|
fun latestId(channel: String): APIResponseAnnouncementId? = announcementRepository.latestId(channel)
|
||||||
fun latestId(): APIResponseAnnouncementId? = announcementRepository.latestId()?.toApi()
|
fun latestId(): APIResponseAnnouncementId? = announcementRepository.latestId()
|
||||||
|
|
||||||
fun latest(channel: String) = announcementRepository.latest(channel)?.toApi()
|
fun latest(channel: String) = announcementRepository.latest(channel)
|
||||||
fun latest() = announcementRepository.latest()?.toApi()
|
fun latest() = announcementRepository.latest()
|
||||||
|
|
||||||
suspend fun all(channel: String) = announcementRepository.all(channel).map { it.toApi() }
|
suspend fun all(channel: String) = announcementRepository.all(channel)
|
||||||
suspend fun all() = announcementRepository.all().map { it.toApi() }
|
suspend fun all() = announcementRepository.all()
|
||||||
|
|
||||||
suspend fun new(new: APIAnnouncement) {
|
suspend fun new(new: APIAnnouncement) {
|
||||||
announcementRepository.new(new)
|
announcementRepository.new(new)
|
||||||
@ -33,18 +32,4 @@ internal class AnnouncementService(
|
|||||||
suspend fun delete(id: Int) {
|
suspend fun delete(id: Int) {
|
||||||
announcementRepository.delete(id)
|
announcementRepository.delete(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AnnouncementRepository.Announcement.toApi() = APIResponseAnnouncement(
|
|
||||||
id.value,
|
|
||||||
author,
|
|
||||||
title,
|
|
||||||
content,
|
|
||||||
attachments.map { it.url },
|
|
||||||
channel,
|
|
||||||
createdAt,
|
|
||||||
archivedAt,
|
|
||||||
level,
|
|
||||||
)
|
|
||||||
|
|
||||||
private fun Int.toApi() = APIResponseAnnouncementId(this)
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user