Сделал FilmRepository

This commit is contained in:
skettiks
2026-03-05 23:52:05 +03:00
parent 975abd1f39
commit aa2e690124
6 changed files with 135 additions and 59 deletions
-59
View File
@@ -1,59 +0,0 @@
-- DROP SCHEMA public;
-- CREATE SCHEMA public AUTHORIZATION pg_database_owner;
-- COMMENT ON SCHEMA public IS 'standard public schema';
-- public.genres определение
-- Drop table
DROP TABLE if exists public.genres;
CREATE TABLE public.genres (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
"name" varchar NULL,
CONSTRAINT genres_unique PRIMARY KEY (id)
);
-- public.users определение
-- Drop table
DROP TABLE if exists public.users;
CREATE TABLE public.users (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
login varchar NOT NULL,
"password" varchar NOT NULL,
CONSTRAINT users_unique UNIQUE (id)
);
-- public.films определение
-- Drop table
DROP TABLE if exists public.films;
CREATE TABLE public.films (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
title varchar NOT NULL,
genreid int4 NOT NULL,
issuedate date NULL,
CONSTRAINT films_unique UNIQUE(id)
);
DROP TABLE if exists public.fiml_genres;
CREATE TABLE public.film_genres (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
genreid int4 NOT NULL,
filmid int4 NOT NULL,
CONSTRAINT film_genres_genre_fk FOREIGN KEY (genreid) REFERENCES public.genres(id),
CONSTRAINT film_genres_film_fk FOREIGN KEY (filmid) REFERENCES public.films(id)
);
-- Drop table
DROP TABLE if exists public.favorites;
CREATE TABLE public.favorites (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
userid int4 NULL,
filmid int4 NULL,
"comment" varchar NULL,
isviewed bool NULL,
CONSTRAINT favorites_unique PRIMARY KEY (id),
CONSTRAINT favorites_films_fk FOREIGN KEY (filmid) REFERENCES public.films(id),
CONSTRAINT favorites_users_fk FOREIGN KEY (userid) REFERENCES public.users(id)
);
@@ -0,0 +1,5 @@
package com.project.movienight.adapters.persistence
import org.springframework.jdbc.core.JdbcTemplate
class FilmLibraryRepository(private val jdbc: JdbcTemplate) {}
@@ -0,0 +1,67 @@
package com.project.movienight.adapters.persistence
import com.project.movienight.domain.model.Film
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.stereotype.Repository
import java.util.UUID
@Repository
class FilmRepository(private val jdbc: JdbcTemplate) {
fun findById(id: UUID): Film? =
jdbc.queryForObject(
"SELECT * FROM films WHERE id = ?",
{ rs, _ ->
Film(
id = UUID.fromString(rs.getString("id")),
title = rs.getString("title"),
description = rs.getString("description"),
)
},
id.toString()
)
fun findAll(): List<Film> =
jdbc.query(
"SELECT * FROM films"
) { rs, _ ->
Film(
id = UUID.fromString(rs.getString("id")),
title = rs.getString("title"),
description = rs.getString("description"),
)
}
fun findTopN(limit: Int, sortBy: String = "title"): List<Film> =
jdbc.query(
"SELECT * FROM films ORDER BY $sortBy LIMIT ?",
{ rs, _ ->
Film(
id = UUID.fromString(rs.getString("id")),
title = rs.getString("title"),
description = rs.getString("description"),
)
},
limit
)
fun save(film: Film) {
jdbc.update(
"""
INSERT INTO films (id, title, description)
VALUES (?, ?, ?)
ON CONFLICT (id) DO UPDATE
SET title = ?, description = ?
""",
film.id.toString(), film.title, film.description,
film.title, film.description
)
}
fun deleteById(id: UUID) {
jdbc.update(
"DELETE FROM films WHERE id = ?",
id.toString()
)
}
}
@@ -0,0 +1,4 @@
package com.project.movienight.adapters.persistence
class UserRepository {
}
@@ -0,0 +1,59 @@
-- DROP SCHEMA public;
-- CREATE SCHEMA public AUTHORIZATION pg_database_owner;
-- COMMENT ON SCHEMA public IS 'standard public schema';
-- public.genres определение
-- Drop table
DROP TABLE if exists public.genres;
CREATE TABLE public.genres (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
"name" varchar NULL,
CONSTRAINT genres_unique PRIMARY KEY (id)
);
-- public.users определение
-- Drop table
DROP TABLE if exists public.users;
CREATE TABLE public.users (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
login varchar NOT NULL,
"password" varchar NOT NULL,
CONSTRAINT users_unique UNIQUE (id)
);
-- public.films определение
-- Drop table
DROP TABLE if exists public.films;
CREATE TABLE public.films (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
title varchar NOT NULL,
genre_id int4 NOT NULL,
issue_date date NULL,
CONSTRAINT films_unique UNIQUE(id)
);
DROP TABLE if exists public.film_genres;
CREATE TABLE public.film_genres (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
genre_id int4 NOT NULL,
film_id int4 NOT NULL,
CONSTRAINT film_genres_genre_fk FOREIGN KEY (genre_id) REFERENCES public.genres(id),
CONSTRAINT film_genres_film_fk FOREIGN KEY (film_id) REFERENCES public.films(id)
);
-- Drop table
DROP TABLE if exists public.favorites;
CREATE TABLE public.favorites (
id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
userid int4 NULL,
film_id int4 NULL,
"comment" varchar NULL,
is_viewed bool NULL,
CONSTRAINT favorites_unique PRIMARY KEY (id),
CONSTRAINT favorites_films_fk FOREIGN KEY (film_id) REFERENCES public.films(id),
CONSTRAINT favorites_users_fk FOREIGN KEY (user_id) REFERENCES public.users(id)
);