Skip to content

Commit

Permalink
Merge pull request #15 from Lukinhasssss/feature/video-aggregate
Browse files Browse the repository at this point in the history
Automated PR from feature/video-aggregate
  • Loading branch information
Lukinhasssss committed May 18, 2024
2 parents c3384c5 + 6b17998 commit b5d65a4
Show file tree
Hide file tree
Showing 49 changed files with 2,218 additions and 28 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ build/
out/
!**/src/main/**/out/
!**/src/test/**/out/
.run/

### Eclipse ###
.apt_generated
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.lukinhasssss.catalogo.application

abstract class UnitUseCase<IN> {
abstract fun execute(anIn: IN)
abstract fun execute(input: IN)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.lukinhasssss.catalogo.application

abstract class UseCase<IN, OUT> {
abstract fun execute(anIn: IN): OUT
abstract fun execute(input: IN): OUT
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ class DeleteCastMemberUseCase(
private val castMemberGateway: CastMemberGateway
) : UnitUseCase<String?>() {

override fun execute(anIn: String?) = with(anIn) {
if (anIn.isNullOrBlank()) return
override fun execute(input: String?) = with(input) {
if (input.isNullOrBlank()) return

castMemberGateway.deleteById(this!!)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.lukinhasssss.catalogo.application.castmember.get

import com.lukinhasssss.catalogo.application.UseCase
import com.lukinhasssss.catalogo.domain.castmember.CastMember
import com.lukinhasssss.catalogo.domain.castmember.CastMemberGateway
import com.lukinhasssss.catalogo.domain.castmember.CastMemberType

class GetAllCastMembersByIdUseCase(
private val castMemberGateway: CastMemberGateway
) : UseCase<GetAllCastMembersByIdUseCase.Input, List<GetAllCastMembersByIdUseCase.Output>>() {

override fun execute(input: Input): List<Output> =
if (input.ids.isEmpty()) {
emptyList()
} else {
castMemberGateway.findAllById(input.ids).map { Output(it) }
}

data class Input(
val ids: Set<String> = emptySet()
)

data class Output(
val id: String,
val name: String,
val type: CastMemberType,
val createdAt: String,
val updatedAt: String
) {
constructor(castMember: CastMember) : this(
id = castMember.id,
name = castMember.name,
type = castMember.type,
createdAt = castMember.createdAt.toString(),
updatedAt = castMember.updatedAt.toString()
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class ListCastMemberUseCase(
private val castMemberGateway: CastMemberGateway
) : UseCase<CastMemberSearchQuery, Pagination<ListCastMemberOutput>>() {

override fun execute(anIn: CastMemberSearchQuery): Pagination<ListCastMemberOutput> = with(anIn) {
override fun execute(input: CastMemberSearchQuery): Pagination<ListCastMemberOutput> = with(input) {
castMemberGateway.findAll(this).map { ListCastMemberOutput.from(it) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class SaveCastMemberUseCase(
private val castMemberGateway: CastMemberGateway
) : UseCase<CastMember?, CastMember>() {

override fun execute(anIn: CastMember?): CastMember = with(anIn) {
override fun execute(input: CastMember?): CastMember = with(input) {
if (this == null) {
throw NotificationException.with(anError = Error("A member cannot be null"))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ class DeleteCategoryUseCase(
private val categoryGateway: CategoryGateway
) : UnitUseCase<String?>() {

override fun execute(anIn: String?) = with(anIn) {
if (anIn.isNullOrBlank()) return
override fun execute(input: String?) = with(input) {
if (input.isNullOrBlank()) return

categoryGateway.deleteById(this!!)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.lukinhasssss.catalogo.application.category.get

import com.lukinhasssss.catalogo.application.UseCase
import com.lukinhasssss.catalogo.domain.category.Category
import com.lukinhasssss.catalogo.domain.category.CategoryGateway

class GetAllCategoriesByIdUseCase(
private val categoryGateway: CategoryGateway
) : UseCase<GetAllCategoriesByIdUseCase.Input, List<GetAllCategoriesByIdUseCase.Output>>() {

override fun execute(input: Input): List<Output> =
if (input.ids.isEmpty()) {
emptyList()
} else {
categoryGateway.findAllById(input.ids).map { Output(it) }
}

data class Input(
val ids: Set<String> = emptySet()
)

data class Output(
val id: String,
val name: String,
val createdAt: String,
val updatedAt: String
) {
constructor(category: Category) : this(
id = category.id,
name = category.name,
createdAt = category.createdAt.toString(),
updatedAt = category.updatedAt.toString()
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class ListCategoryUseCase(
private val categoryGateway: CategoryGateway
) : UseCase<CategorySearchQuery, Pagination<ListCategoryOutput>>() {

override fun execute(anIn: CategorySearchQuery): Pagination<ListCategoryOutput> = with(anIn) {
override fun execute(input: CategorySearchQuery): Pagination<ListCategoryOutput> = with(input) {
categoryGateway.findAll(this).map { ListCategoryOutput.from(it) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class SaveCategoryUseCase(
private val categoryGateway: CategoryGateway
) : UseCase<Category?, Category>() {

override fun execute(anIn: Category?): Category = with(anIn) {
override fun execute(input: Category?): Category = with(input) {
if (this == null) {
throw NotificationException.with(anError = Error("A category cannot be null"))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class DeleteGenreUseCase(
private val genreGateway: GenreGateway
) : UnitUseCase<DeleteGenreUseCase.Input>() {

override fun execute(anIn: Input) = with(anIn) {
override fun execute(input: Input) = with(input) {
if (this.genreId.isNullOrBlank()) return
genreGateway.deleteById(this.genreId)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.lukinhasssss.catalogo.application.genre.get

import com.lukinhasssss.catalogo.application.UseCase
import com.lukinhasssss.catalogo.domain.genre.Genre
import com.lukinhasssss.catalogo.domain.genre.GenreGateway
import java.time.Instant

class GetAllGenresByIdUseCase(
private val genreGateway: GenreGateway
) : UseCase<GetAllGenresByIdUseCase.Input, List<GetAllGenresByIdUseCase.Output>>() {

override fun execute(input: Input): List<Output> =
if (input.ids.isEmpty()) {
emptyList()
} else {
genreGateway.findAllById(input.ids).map { Output(it) }
}

data class Input(
val ids: Set<String> = emptySet()
)

data class Output(
val id: String,
val name: String,
val active: Boolean,
val categories: Set<String> = setOf(),
val createdAt: Instant,
val updatedAt: Instant,
val deletedAt: Instant? = null
) {
constructor(genre: Genre) : this(
id = genre.id,
name = genre.name,
active = genre.isActive,
categories = genre.categories,
createdAt = genre.createdAt,
updatedAt = genre.updatedAt,
deletedAt = genre.deletedAt
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ListGenreUseCase(
private val genreGateway: GenreGateway
) : UseCase<ListGenreUseCase.Input, Pagination<ListGenreUseCase.Output>>() {

override fun execute(anIn: Input): Pagination<Output> = anIn.run {
override fun execute(input: Input): Pagination<Output> = input.run {
GenreSearchQuery(
page = page,
perPage = perPage,
Expand Down Expand Up @@ -43,15 +43,17 @@ class ListGenreUseCase(
val deletedAt: Instant? = null
) {
companion object {
fun from(genre: Genre) = Output(
id = genre.id,
name = genre.name,
active = genre.isActive,
categories = genre.categories,
createdAt = genre.createdAt,
updatedAt = genre.updatedAt,
deletedAt = genre.deletedAt
)
fun from(genre: Genre) = with(genre) {
Output(
id = id,
name = name,
active = isActive,
categories = categories,
createdAt = createdAt,
updatedAt = updatedAt,
deletedAt = deletedAt
)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class SaveGenreUseCase(
private val genreGateway: GenreGateway
) : UseCase<SaveGenreUseCase.Input, SaveGenreUseCase.Output>() {

override fun execute(anIn: Input): Output = anIn.run {
override fun execute(input: Input): Output = input.run {
genreGateway.save(
Genre.with(
id = id,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.lukinhasssss.catalogo.application.video.delete

import com.lukinhasssss.catalogo.application.UnitUseCase
import com.lukinhasssss.catalogo.domain.video.VideoGateway

class DeleteVideoUseCase(
private val videoGateway: VideoGateway
) : UnitUseCase<DeleteVideoUseCase.Input>() {

override fun execute(input: Input) = with(input) {
if (this.videoId.isNullOrBlank()) return
videoGateway.deleteById(this.videoId)
}

data class Input(
val videoId: String?
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.lukinhasssss.catalogo.application.video.get

import com.lukinhasssss.catalogo.application.UseCase
import com.lukinhasssss.catalogo.domain.video.Video
import com.lukinhasssss.catalogo.domain.video.VideoGateway

class GetVideoUseCase(
private val videoGateway: VideoGateway
) : UseCase<GetVideoUseCase.Input, GetVideoUseCase.Output?>() {

override fun execute(input: Input): Output? =
if (input.videoId.isBlank()) null else videoGateway.findById(input.videoId)?.let { Output.from(it) }

data class Input(val videoId: String)

data class Output(
val id: String,
val title: String,
val description: String,
val launchedAt: Int,
val duration: Double,
val rating: String,
val opened: Boolean,
val published: Boolean,
val createdAt: String,
val updatedAt: String,
val banner: String? = null,
val thumbnail: String? = null,
val thumbnailHalf: String? = null,
val trailer: String? = null,
val video: String? = null,
val categories: Set<String> = emptySet(),
val genres: Set<String> = emptySet(),
val castMembers: Set<String> = emptySet()
) {
companion object {
fun from(video: Video): Output = with(video) {
Output(
id = id,
title = title,
description = description,
launchedAt = launchedAt.value,
duration = duration,
rating = rating.name,
opened = opened,
published = published,
createdAt = createdAt.toString(),
updatedAt = updatedAt.toString(),
banner = banner,
thumbnail = thumbnail,
thumbnailHalf = thumbnailHalf,
trailer = trailer,
video = this.video,
categories = categories,
genres = genres,
castMembers = castMembers
)
}
}
}
}
Loading

0 comments on commit b5d65a4

Please sign in to comment.