feat: MediaにオーナーのActorIdを追加

This commit is contained in:
usbharu 2024-08-23 22:43:11 +09:00
parent aa476256ac
commit e15380c96c
Signed by: usbharu
GPG Key ID: 6556747BF94EEBC8
5 changed files with 53 additions and 22 deletions

View File

@ -58,7 +58,8 @@ class UploadMediaApplicationService(
type = process.fileType,
mimeType = process.mimeType,
blurHash = process.blurHash?.let { MediaBlurHash(it) },
description = command.description?.let { MediaDescription(it) }
description = command.description?.let { MediaDescription(it) },
actorId = principal.actorId
)
mediaRepository.save(media)

View File

@ -10,18 +10,20 @@ data class MediaDetail(
val thumbnailUrl: URI?,
val sensitive: Boolean,
val description: String,
val blurhash: String
val blurhash: String,
val actorId: Long
) {
companion object {
fun of(media: Media): MediaDetail {
return MediaDetail(
media.id.id,
media.type.name,
media.url,
media.thumbnailUrl,
false,
media.description?.description.orEmpty(),
media.blurHash?.hash.orEmpty()
mediaId = media.id.id,
type = media.type.name,
url = media.url,
thumbnailUrl = media.thumbnailUrl,
sensitive = false,
description = media.description?.description.orEmpty(),
blurhash = media.blurHash?.hash.orEmpty(),
actorId = media.actorId.id
)
}
}

View File

@ -16,6 +16,7 @@
package dev.usbharu.hideout.core.domain.model.media
import dev.usbharu.hideout.core.domain.model.actor.ActorId
import java.net.URI
class Media(
@ -28,6 +29,7 @@ class Media(
val mimeType: MimeType,
val blurHash: MediaBlurHash?,
val description: MediaDescription? = null,
val actorId: ActorId,
) {
var url = url
private set
@ -35,17 +37,35 @@ class Media(
fun setUrl(url: URI) {
this.url = url
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as Media
return id == other.id
}
override fun hashCode(): Int {
return id.hashCode()
}
override fun toString(): String {
return "Media(" +
"id=$id, " +
"name=$name, " +
"url=$url, " +
"remoteUrl=$remoteUrl, " +
"thumbnailUrl=$thumbnailUrl, " +
"type=$type, " +
"mimeType=$mimeType, " +
"blurHash=$blurHash, " +
"description=$description" +
")"
"id=$id, " +
"name=$name, " +
"remoteUrl=$remoteUrl, " +
"thumbnailUrl=$thumbnailUrl, " +
"type=$type, " +
"mimeType=$mimeType, " +
"blurHash=$blurHash, " +
"description=$description, " +
"actorId=$actorId, " +
"url=$url" +
")"
}
}

View File

@ -16,6 +16,7 @@
package dev.usbharu.hideout.core.infrastructure.exposedrepository
import dev.usbharu.hideout.core.domain.model.actor.ActorId
import dev.usbharu.hideout.core.domain.model.media.*
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
@ -66,6 +67,7 @@ class MediaRepositoryImpl : MediaRepository, AbstractRepository() {
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 {
@ -78,6 +80,7 @@ class MediaRepositoryImpl : MediaRepository, AbstractRepository() {
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
@ -100,7 +103,8 @@ fun ResultRow.toMedia(): EntityMedia {
type = fileType,
blurHash = this[Media.blurhash]?.let { MediaBlurHash(it) },
mimeType = MimeType(mimeType.substringBefore("/"), mimeType.substringAfter("/"), fileType),
description = this[Media.description]?.let { MediaDescription(it) }
description = this[Media.description]?.let { MediaDescription(it) },
actorId = ActorId(this[Media.actorId])
)
}
@ -114,5 +118,6 @@ object Media : Table("media") {
val blurhash = varchar("blurhash", 255).nullable()
val mimeType = varchar("mime_type", 255)
val description = varchar("description", 4000).nullable()
val actorId = long("actor_id").references(Actors.id)
override val primaryKey = PrimaryKey(id)
}

View File

@ -16,6 +16,7 @@
package dev.usbharu.hideout.mastodon.infrastructure.exposedquery
import dev.usbharu.hideout.core.domain.model.actor.ActorId
import dev.usbharu.hideout.core.domain.model.emoji.CustomEmoji
import dev.usbharu.hideout.core.domain.model.media.*
import dev.usbharu.hideout.core.domain.model.post.Visibility
@ -284,7 +285,8 @@ fun ResultRow.toMedia(): EntityMedia {
type = fileType,
blurHash = this[Media.blurhash]?.let { MediaBlurHash(it) },
mimeType = MimeType(mimeType.substringBefore("/"), mimeType.substringAfter("/"), fileType),
description = this[Media.description]?.let { MediaDescription(it) }
description = this[Media.description]?.let { MediaDescription(it) },
actorId = ActorId(this[Media.actorId])
)
}
@ -300,7 +302,8 @@ fun ResultRow.toMediaOrNull(): EntityMedia? {
type = FileType.valueOf(this[Media.type]),
blurHash = this[Media.blurhash]?.let { MediaBlurHash(it) },
mimeType = MimeType(mimeType.substringBefore("/"), mimeType.substringAfter("/"), fileType),
description = this[Media.description]?.let { MediaDescription(it) }
description = this[Media.description]?.let { MediaDescription(it) },
actorId = ActorId(this[Media.actorId])
)
}