mirror of https://github.com/usbharu/Hideout.git
				
				
				
			refactor: AbstractRepositoryを改善
This commit is contained in:
		
							parent
							
								
									2c10fc5330
								
							
						
					
					
						commit
						56a4e94e41
					
				| 
						 | 
				
			
			@ -29,9 +29,7 @@ import org.slf4j.LoggerFactory
 | 
			
		|||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedPrincipalQueryService : PrincipalQueryService, AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedPrincipalQueryService : PrincipalQueryService, AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun findByUserDetailId(userDetailId: UserDetailId): PrincipalDTO {
 | 
			
		||||
        return query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,16 +25,13 @@ import dev.usbharu.hideout.core.infrastructure.exposedrepository.toCustomEmojiOr
 | 
			
		|||
import dev.usbharu.hideout.core.infrastructure.exposedrepository.toReaction
 | 
			
		||||
import dev.usbharu.hideout.core.query.reactions.ReactionsQueryService
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
import java.net.URI
 | 
			
		||||
import dev.usbharu.hideout.core.infrastructure.exposedrepository.Reactions as ExposedrepositoryReactions
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedReactionsQueryService : ReactionsQueryService, AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedReactionsQueryService : ReactionsQueryService, AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun findAllByPostId(postId: PostId): List<Reactions> {
 | 
			
		||||
        return query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,17 +25,12 @@ import dev.usbharu.hideout.core.domain.model.support.principal.Principal
 | 
			
		|||
import dev.usbharu.hideout.core.infrastructure.exposedrepository.*
 | 
			
		||||
import dev.usbharu.hideout.core.query.usertimeline.UserTimelineQueryService
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
import java.net.URI
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedUserTimelineQueryService : UserTimelineQueryService, AbstractRepository() {
 | 
			
		||||
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
class ExposedUserTimelineQueryService : UserTimelineQueryService, AbstractRepository(logger) {
 | 
			
		||||
    protected fun authorizedQuery(principal: Principal? = null): QueryAlias {
 | 
			
		||||
        if (principal == null) {
 | 
			
		||||
            return Posts
 | 
			
		||||
| 
						 | 
				
			
			@ -58,10 +53,10 @@ class ExposedUserTimelineQueryService : UserTimelineQueryService, AbstractReposi
 | 
			
		|||
            .select(Posts.columns)
 | 
			
		||||
            .where {
 | 
			
		||||
                Posts.visibility eq Visibility.PUBLIC.name or
 | 
			
		||||
                    (Posts.visibility eq Visibility.UNLISTED.name) or
 | 
			
		||||
                    (Posts.visibility eq Visibility.DIRECT.name and (PostsVisibleActors.actorId eq principal.actorId.id)) or
 | 
			
		||||
                    (Posts.visibility eq Visibility.FOLLOWERS.name and (Relationships.blocking eq false and (relationshipsAlias[Relationships.following] eq true))) or
 | 
			
		||||
                    (Posts.actorId eq principal.actorId.id)
 | 
			
		||||
                        (Posts.visibility eq Visibility.UNLISTED.name) or
 | 
			
		||||
                        (Posts.visibility eq Visibility.DIRECT.name and (PostsVisibleActors.actorId eq principal.actorId.id)) or
 | 
			
		||||
                        (Posts.visibility eq Visibility.FOLLOWERS.name and (Relationships.blocking eq false and (relationshipsAlias[Relationships.following] eq true))) or
 | 
			
		||||
                        (Posts.actorId eq principal.actorId.id)
 | 
			
		||||
            }
 | 
			
		||||
            .alias("authorized_table")
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,8 +28,7 @@ import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator
 | 
			
		|||
import java.sql.SQLException
 | 
			
		||||
 | 
			
		||||
@Suppress("VarCouldBeVal")
 | 
			
		||||
abstract class AbstractRepository {
 | 
			
		||||
    protected abstract val logger: Logger
 | 
			
		||||
abstract class AbstractRepository(protected val logger: Logger) {
 | 
			
		||||
    private val sqlErrorCodeSQLExceptionTranslator = SQLErrorCodeSQLExceptionTranslator()
 | 
			
		||||
    private val springDataAccessExceptionSQLExceptionTranslator = SpringDataAccessExceptionSQLExceptionTranslator()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,17 +24,14 @@ import dev.usbharu.hideout.core.domain.shared.domainevent.DomainEventPublisher
 | 
			
		|||
import dev.usbharu.hideout.core.domain.shared.repository.DomainEventPublishableRepository
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedActorInstanceRelationshipRepository(override val domainEventPublisher: DomainEventPublisher) :
 | 
			
		||||
    ActorInstanceRelationshipRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<ActorInstanceRelationship> {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(actorInstanceRelationship: ActorInstanceRelationship): ActorInstanceRelationship {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,6 @@ import dev.usbharu.hideout.core.infrastructure.exposed.uri
 | 
			
		|||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,11 +32,9 @@ import org.springframework.stereotype.Repository
 | 
			
		|||
class ExposedActorRepository(
 | 
			
		||||
    private val actorQueryMapper: QueryMapper<Actor>,
 | 
			
		||||
    override val domainEventPublisher: DomainEventPublisher,
 | 
			
		||||
) : AbstractRepository(),
 | 
			
		||||
) : AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<Actor>,
 | 
			
		||||
    ActorRepository {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(actor: Actor): Actor {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,14 +22,11 @@ import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		|||
import org.jetbrains.exposed.sql.Table
 | 
			
		||||
import org.jetbrains.exposed.sql.deleteWhere
 | 
			
		||||
import org.jetbrains.exposed.sql.upsert
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedApplicationRepository : ApplicationRepository, AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedApplicationRepository : ApplicationRepository, AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(application: Application) = query {
 | 
			
		||||
        Applications.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,15 +25,12 @@ import org.jetbrains.exposed.sql.*
 | 
			
		|||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.CurrentTimestamp
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
import java.net.URI
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedCustomEmojiRepository : CustomEmojiRepository, AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedCustomEmojiRepository : CustomEmojiRepository, AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(customEmoji: CustomEmoji): CustomEmoji = query {
 | 
			
		||||
        CustomEmojis.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,15 +24,12 @@ import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailId
 | 
			
		|||
import dev.usbharu.hideout.core.infrastructure.exposed.QueryMapper
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedFilterRepository(private val filterQueryMapper: QueryMapper<Filter>) : FilterRepository,
 | 
			
		||||
    AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
    AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(filter: Filter): Filter = query {
 | 
			
		||||
        Filters.upsert { upsertStatement ->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,6 @@ import dev.usbharu.hideout.core.infrastructure.exposed.uri
 | 
			
		|||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
import java.net.URI
 | 
			
		||||
| 
						 | 
				
			
			@ -29,9 +28,7 @@ import dev.usbharu.hideout.core.domain.model.instance.Instance as InstanceEntity
 | 
			
		|||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedInstanceRepository : InstanceRepository,
 | 
			
		||||
    AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
    AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(instance: InstanceEntity): InstanceEntity = query {
 | 
			
		||||
        Instance.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,15 +21,12 @@ import dev.usbharu.hideout.core.domain.model.media.*
 | 
			
		|||
import dev.usbharu.hideout.core.infrastructure.exposed.uri
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
import dev.usbharu.hideout.core.domain.model.media.Media as EntityMedia
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedMediaRepository : MediaRepository, AbstractRepository() {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedMediaRepository : MediaRepository, AbstractRepository(logger) {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(media: EntityMedia): EntityMedia = query {
 | 
			
		||||
        Media.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,6 @@ import org.jetbrains.exposed.sql.*
 | 
			
		|||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -53,9 +52,8 @@ class ExposedPostRepository(
 | 
			
		|||
    override val domainEventPublisher: DomainEventPublisher,
 | 
			
		||||
) :
 | 
			
		||||
    PostRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<Post> {
 | 
			
		||||
    override val logger: Logger = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(post: Post): Post {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,19 +28,15 @@ import dev.usbharu.hideout.core.domain.shared.repository.DomainEventPublishableR
 | 
			
		|||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedReactionRepository(override val domainEventPublisher: DomainEventPublisher) :
 | 
			
		||||
    ReactionRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<Reaction> {
 | 
			
		||||
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(reaction: Reaction): Reaction {
 | 
			
		||||
        return query {
 | 
			
		||||
            Reactions.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,17 +23,14 @@ import dev.usbharu.hideout.core.domain.shared.domainevent.DomainEventPublisher
 | 
			
		|||
import dev.usbharu.hideout.core.domain.shared.repository.DomainEventPublishableRepository
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedRelationshipRepository(override val domainEventPublisher: DomainEventPublisher) :
 | 
			
		||||
    RelationshipRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<Relationship> {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(relationship: Relationship): Relationship {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,14 +24,11 @@ import dev.usbharu.hideout.core.domain.model.timelinerelationship.TimelineRelati
 | 
			
		|||
import dev.usbharu.hideout.core.domain.model.timelinerelationship.Visible
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedTimelineRelationshipRepository : AbstractRepository(), TimelineRelationshipRepository {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
class ExposedTimelineRelationshipRepository : AbstractRepository(logger), TimelineRelationshipRepository {
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(timelineRelationship: TimelineRelationship): TimelineRelationship {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,17 +22,14 @@ import dev.usbharu.hideout.core.domain.shared.domainevent.DomainEventPublisher
 | 
			
		|||
import dev.usbharu.hideout.core.domain.shared.repository.DomainEventPublishableRepository
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedTimelineRepository(override val domainEventPublisher: DomainEventPublisher) :
 | 
			
		||||
    TimelineRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<Timeline> {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(timeline: Timeline): Timeline {
 | 
			
		||||
        query {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,17 +27,14 @@ import dev.usbharu.hideout.core.domain.shared.repository.DomainEventPublishableR
 | 
			
		|||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
 | 
			
		||||
import org.jetbrains.exposed.sql.javatime.timestamp
 | 
			
		||||
import org.slf4j.Logger
 | 
			
		||||
import org.slf4j.LoggerFactory
 | 
			
		||||
import org.springframework.stereotype.Repository
 | 
			
		||||
 | 
			
		||||
@Repository
 | 
			
		||||
class ExposedUserDetailRepository(override val domainEventPublisher: DomainEventPublisher) :
 | 
			
		||||
    UserDetailRepository,
 | 
			
		||||
    AbstractRepository(),
 | 
			
		||||
    AbstractRepository(logger),
 | 
			
		||||
    DomainEventPublishableRepository<UserDetail> {
 | 
			
		||||
    override val logger: Logger
 | 
			
		||||
        get() = Companion.logger
 | 
			
		||||
 | 
			
		||||
    override suspend fun save(userDetail: UserDetail): UserDetail = query {
 | 
			
		||||
        UserDetails.upsert {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue