mirror of https://github.com/usbharu/Hideout.git
Merge pull request #587 from usbharu/use-upsert
feat: insertとupdateを使用していた部分をupsertに置き換え
This commit is contained in:
commit
ebef329120
|
@ -37,27 +37,14 @@ class CustomEmojiRepositoryImpl : CustomEmojiRepository,
|
|||
get() = Companion.logger
|
||||
|
||||
override suspend fun save(customEmoji: CustomEmoji): CustomEmoji = query {
|
||||
val singleOrNull =
|
||||
CustomEmojis.selectAll().where { CustomEmojis.id eq customEmoji.id.emojiId }.forUpdate().singleOrNull()
|
||||
if (singleOrNull == null) {
|
||||
CustomEmojis.insert {
|
||||
it[id] = customEmoji.id.emojiId
|
||||
it[name] = customEmoji.name
|
||||
it[domain] = customEmoji.domain.domain
|
||||
it[instanceId] = customEmoji.instanceId.instanceId
|
||||
it[url] = customEmoji.url.toString()
|
||||
it[category] = customEmoji.category
|
||||
it[createdAt] = customEmoji.createdAt
|
||||
}
|
||||
} else {
|
||||
CustomEmojis.update({ CustomEmojis.id eq customEmoji.id.emojiId }) {
|
||||
it[name] = customEmoji.name
|
||||
it[domain] = customEmoji.domain.domain
|
||||
it[instanceId] = customEmoji.instanceId.instanceId
|
||||
it[url] = customEmoji.url.toString()
|
||||
it[category] = customEmoji.category
|
||||
it[createdAt] = customEmoji.createdAt
|
||||
}
|
||||
CustomEmojis.upsert {
|
||||
it[id] = customEmoji.id.emojiId
|
||||
it[name] = customEmoji.name
|
||||
it[domain] = customEmoji.domain.domain
|
||||
it[instanceId] = customEmoji.instanceId.instanceId
|
||||
it[url] = customEmoji.url.toString()
|
||||
it[category] = customEmoji.category
|
||||
it[createdAt] = customEmoji.createdAt
|
||||
}
|
||||
return@query customEmoji
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ class ExposedTimelineRelationshipRepository : AbstractRepository(), TimelineRela
|
|||
|
||||
override suspend fun save(timelineRelationship: TimelineRelationship): TimelineRelationship {
|
||||
query {
|
||||
TimelineRelationships.insert {
|
||||
TimelineRelationships.upsert {
|
||||
it[id] = timelineRelationship.id.value
|
||||
it[timelineId] = timelineRelationship.timelineId.value
|
||||
it[actorId] = timelineRelationship.actorId.id
|
||||
|
|
|
@ -20,7 +20,7 @@ class ExposedTimelineRepository(override val domainEventPublisher: DomainEventPu
|
|||
|
||||
override suspend fun save(timeline: Timeline): Timeline {
|
||||
query {
|
||||
Timelines.insert {
|
||||
Timelines.upsert {
|
||||
it[id] = timeline.id.value
|
||||
it[userDetailId] = timeline.userDetailId.id
|
||||
it[name] = timeline.name.value
|
||||
|
|
|
@ -33,36 +33,21 @@ class InstanceRepositoryImpl : InstanceRepository,
|
|||
get() = Companion.logger
|
||||
|
||||
override suspend fun save(instance: InstanceEntity): InstanceEntity = query {
|
||||
if (Instance.selectAll().where { Instance.id.eq(instance.id.instanceId) }.forUpdate().empty()) {
|
||||
Instance.insert {
|
||||
it[id] = instance.id.instanceId
|
||||
it[name] = instance.name.name
|
||||
it[description] = instance.description.description
|
||||
it[url] = instance.url.toString()
|
||||
it[iconUrl] = instance.iconUrl.toString()
|
||||
it[sharedInbox] = instance.sharedInbox?.toString()
|
||||
it[software] = instance.software.software
|
||||
it[version] = instance.version.version
|
||||
it[isBlocked] = instance.isBlocked
|
||||
it[isMuted] = instance.isMuted
|
||||
it[moderationNote] = instance.moderationNote.note
|
||||
it[createdAt] = instance.createdAt
|
||||
}
|
||||
} else {
|
||||
Instance.update({ Instance.id eq instance.id.instanceId }) {
|
||||
it[name] = instance.name.name
|
||||
it[description] = instance.description.description
|
||||
it[url] = instance.url.toString()
|
||||
it[iconUrl] = instance.iconUrl.toString()
|
||||
it[sharedInbox] = instance.sharedInbox?.toString()
|
||||
it[software] = instance.software.software
|
||||
it[version] = instance.version.version
|
||||
it[isBlocked] = instance.isBlocked
|
||||
it[isMuted] = instance.isMuted
|
||||
it[moderationNote] = instance.moderationNote.note
|
||||
it[createdAt] = instance.createdAt
|
||||
}
|
||||
Instance.upsert {
|
||||
it[id] = instance.id.instanceId
|
||||
it[name] = instance.name.name
|
||||
it[description] = instance.description.description
|
||||
it[url] = instance.url.toString()
|
||||
it[iconUrl] = instance.iconUrl.toString()
|
||||
it[sharedInbox] = instance.sharedInbox?.toString()
|
||||
it[software] = instance.software.software
|
||||
it[version] = instance.version.version
|
||||
it[isBlocked] = instance.isBlocked
|
||||
it[isMuted] = instance.isMuted
|
||||
it[moderationNote] = instance.moderationNote.note
|
||||
it[createdAt] = instance.createdAt
|
||||
}
|
||||
|
||||
return@query instance
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,22 @@ class MediaRepositoryImpl : MediaRepository, AbstractRepository() {
|
|||
override val logger: Logger
|
||||
get() = Companion.logger
|
||||
|
||||
override suspend fun save(media: EntityMedia): EntityMedia = query {
|
||||
Media.upsert {
|
||||
it[id] = media.id.id
|
||||
it[name] = media.name.name
|
||||
it[url] = media.url.toString()
|
||||
it[remoteUrl] = media.remoteUrl?.toString()
|
||||
it[thumbnailUrl] = media.thumbnailUrl?.toString()
|
||||
it[type] = media.type.name
|
||||
it[blurhash] = media.blurHash?.hash
|
||||
it[mimeType] = media.mimeType.type + "/" + media.mimeType.subtype
|
||||
it[description] = media.description?.description
|
||||
it[actorId] = media.actorId.id
|
||||
}
|
||||
return@query media
|
||||
}
|
||||
|
||||
override suspend fun findById(id: MediaId): dev.usbharu.hideout.core.domain.model.media.Media? {
|
||||
return query {
|
||||
return@query Media
|
||||
|
@ -55,37 +71,6 @@ class MediaRepositoryImpl : MediaRepository, AbstractRepository() {
|
|||
}
|
||||
}
|
||||
|
||||
override suspend fun save(media: EntityMedia): EntityMedia = query {
|
||||
if (Media.selectAll().where { Media.id eq media.id.id }.forUpdate().singleOrNull() != null
|
||||
) {
|
||||
Media.update({ Media.id eq media.id.id }) {
|
||||
it[name] = media.name.name
|
||||
it[url] = media.url.toString()
|
||||
it[remoteUrl] = media.remoteUrl?.toString()
|
||||
it[thumbnailUrl] = media.thumbnailUrl?.toString()
|
||||
it[type] = media.type.name
|
||||
it[blurhash] = media.blurHash?.hash
|
||||
it[mimeType] = media.mimeType.type + "/" + media.mimeType.subtype
|
||||
it[description] = media.description?.description
|
||||
it[actorId] = media.actorId.id
|
||||
}
|
||||
} else {
|
||||
Media.insert {
|
||||
it[id] = media.id.id
|
||||
it[name] = media.name.name
|
||||
it[url] = media.url.toString()
|
||||
it[remoteUrl] = media.remoteUrl?.toString()
|
||||
it[thumbnailUrl] = media.thumbnailUrl?.toString()
|
||||
it[type] = media.type.name
|
||||
it[blurhash] = media.blurHash?.hash
|
||||
it[mimeType] = media.mimeType.type + "/" + media.mimeType.subtype
|
||||
it[description] = media.description?.description
|
||||
it[actorId] = media.actorId.id
|
||||
}
|
||||
}
|
||||
return@query media
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(MediaRepositoryImpl::class.java)
|
||||
}
|
||||
|
|
|
@ -41,26 +41,15 @@ class UserDetailRepositoryImpl(override val domainEventPublisher: DomainEventPub
|
|||
|
||||
override suspend fun save(userDetail: UserDetail): UserDetail {
|
||||
val userDetail1 = query {
|
||||
val singleOrNull =
|
||||
UserDetails.selectAll().where { UserDetails.id eq userDetail.id.id }.forUpdate().singleOrNull()
|
||||
if (singleOrNull == null) {
|
||||
UserDetails.insert {
|
||||
it[id] = userDetail.id.id
|
||||
it[actorId] = userDetail.actorId.id
|
||||
it[password] = userDetail.password.password
|
||||
it[autoAcceptFolloweeFollowRequest] = userDetail.autoAcceptFolloweeFollowRequest
|
||||
it[lastMigration] = userDetail.lastMigration
|
||||
it[homeTimelineId] = userDetail.homeTimelineId?.value
|
||||
}
|
||||
} else {
|
||||
UserDetails.update({ UserDetails.id eq userDetail.id.id }) {
|
||||
it[actorId] = userDetail.actorId.id
|
||||
it[password] = userDetail.password.password
|
||||
it[autoAcceptFolloweeFollowRequest] = userDetail.autoAcceptFolloweeFollowRequest
|
||||
it[lastMigration] = userDetail.lastMigration
|
||||
it[homeTimelineId] = userDetail.homeTimelineId?.value
|
||||
}
|
||||
UserDetails.upsert {
|
||||
it[id] = userDetail.id.id
|
||||
it[actorId] = userDetail.actorId.id
|
||||
it[password] = userDetail.password.password
|
||||
it[autoAcceptFolloweeFollowRequest] = userDetail.autoAcceptFolloweeFollowRequest
|
||||
it[lastMigration] = userDetail.lastMigration
|
||||
it[homeTimelineId] = userDetail.homeTimelineId?.value
|
||||
}
|
||||
|
||||
onComplete {
|
||||
update(userDetail)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue