initial commit

This commit is contained in:
skettiks
2026-03-03 17:34:10 +03:00
commit aa4f0dbf00
39 changed files with 1653 additions and 0 deletions
@@ -0,0 +1,63 @@
package com.project.movienight.application.services
import com.project.movienight.application.ports.input.CreateFilmCommand
import com.project.movienight.application.ports.input.CreateFilmUseCase
import com.project.movienight.application.ports.input.DeleteFilmUseCase
import com.project.movienight.application.ports.input.EditFilmCommand
import com.project.movienight.application.ports.input.EditFilmUseCase
import com.project.movienight.application.ports.output.FilmRepositoryPort
import com.project.movienight.application.ports.output.IdGenerator
import com.project.movienight.config.FilmServiceProperties
import com.project.movienight.domain.model.Film
import org.springframework.stereotype.Service
import java.util.UUID
@Service
class FilmService(
private val filmRepository: FilmRepositoryPort,
private val idGenerator: IdGenerator,
private val filmConfig: FilmServiceProperties,
) : CreateFilmUseCase,
EditFilmUseCase,
DeleteFilmUseCase {
override fun create(command: CreateFilmCommand): Film {
if (filmConfig.isBlocked(command.title)) {
throw IllegalArgumentException("Film with this title is not acceptable")
}
if (filmConfig.isBlocked(command.description)) {
throw IllegalArgumentException("Film with this description is not acceptable")
}
val film =
Film(
id = idGenerator.generateId(),
title = command.title,
description = command.description,
)
return filmRepository.save(film)
}
override fun edit(
id: UUID,
command: EditFilmCommand,
): Film {
if (filmConfig.isBlocked(command.title)) {
throw IllegalArgumentException("Film with this title is not acceptable")
}
if (filmConfig.isBlocked(command.description)) {
throw IllegalArgumentException("Film with this description is not acceptable")
}
var film = filmRepository.findById(id) ?: throw IllegalArgumentException("Film with id $id not found")
film = film.copy(title = command.title, description = command.description)
return filmRepository.save(film)
}
override fun delete(id: UUID) {
filmRepository.findById(id) ?: throw IllegalArgumentException("Film with id $id not found")
filmRepository.deleteById(id)
}
}
@@ -0,0 +1,58 @@
package com.project.movienight.application.services
import com.project.movienight.application.ports.input.CreateUserCommand
import com.project.movienight.application.ports.input.CreateUserUseCase
import com.project.movienight.application.ports.input.DeleteUserUseCase
import com.project.movienight.application.ports.input.EditUserCommand
import com.project.movienight.application.ports.input.EditUserUseCase
import com.project.movienight.application.ports.output.IdGenerator
import com.project.movienight.application.ports.output.UserRepositoryPort
import com.project.movienight.config.UserServiceProperties
import com.project.movienight.domain.model.User
import org.springframework.stereotype.Service
import java.util.UUID
@Service
class UserService(
private val userRepository: UserRepositoryPort,
private val idGenerator: IdGenerator,
private val userConfig: UserServiceProperties,
) : CreateUserUseCase,
EditUserUseCase,
DeleteUserUseCase {
override fun create(command: CreateUserCommand): User {
if (userConfig.isBlocked(command.name)) {
throw IllegalArgumentException("User with this name is not acceptable")
}
val user =
User(
id = idGenerator.generateId(),
name = command.name,
email = command.email,
library = null,
)
return userRepository.save(user)
}
override fun edit(
id: UUID,
command: EditUserCommand,
): User {
if (userConfig.isBlocked(command.name)) {
throw IllegalArgumentException("User with this name is not acceptable")
}
var user = userRepository.findById(id) ?: throw IllegalArgumentException("User with id $id not found")
user = user.copy(name = command.name)
return userRepository.save(user)
}
override fun delete(id: UUID) {
userRepository.findById(id) ?: throw IllegalArgumentException("User with id $id not found")
userRepository.deleteById(id)
}
}