diff --git a/.idea/dictionaries/max.xml b/.idea/dictionaries/max.xml
new file mode 100644
index 0000000..81b3e8d
--- /dev/null
+++ b/.idea/dictionaries/max.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..75d6754
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+## Backend для приложения "Автоматизация работы библиотеки"
+
+### Ограничения
+
+Поскольку аутентификация и авторизация не реализованы, данное приложение можно использовать только в ограниченной среде (например внутри docker контейнера).
+
diff --git a/pom.xml b/pom.xml
index 39ad98e..c464783 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,19 +37,6 @@
io.quarkus
quarkus-resteasy-jsonb
-
- io.quarkus
- quarkus-arc
-
-
- io.quarkus
- quarkus-resteasy
-
-
- io.quarkus
- quarkus-junit5
- test
-
io.rest-assured
rest-assured
@@ -70,6 +57,12 @@
validation-api
2.0.1.Final
+
+ com.google.inject
+ guice
+ 7.0.0
+
+
diff --git a/src/main/java/ru/cft/booklib/application/AppModule.java b/src/main/java/ru/cft/booklib/application/AppModule.java
new file mode 100644
index 0000000..5990bc2
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/application/AppModule.java
@@ -0,0 +1,20 @@
+package ru.cft.booklib.application;
+
+import com.google.inject.AbstractModule;
+import ru.cft.booklib.service.BooksService;
+import ru.cft.booklib.service.ReadersService;
+import ru.cft.booklib.service.TransactionsService;
+import ru.cft.booklib.service.impl.BooksServiceImpl;
+import ru.cft.booklib.service.impl.ReadersServiceImpl;
+import ru.cft.booklib.service.impl.TransactionsServiceImpl;
+
+/** Модуль внедрения зависимостей. */
+public class AppModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ // Инициализируем сервисы.
+ bind(BooksService.class).to(BooksServiceImpl.class);
+ bind(ReadersService.class).to(ReadersServiceImpl.class);
+ bind(TransactionsService.class).to(TransactionsServiceImpl.class);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ru/cft/booklib/application/InjectionInitializer.java b/src/main/java/ru/cft/booklib/application/InjectionInitializer.java
new file mode 100644
index 0000000..b63893b
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/application/InjectionInitializer.java
@@ -0,0 +1,13 @@
+package ru.cft.booklib.application;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/** Добавление компонентов к контейнеру внедрения зависимостей. */
+public class InjectionInitializer {
+
+ /** Инициализация внедрения зависимостей. */
+ public static void initDI() {
+ Guice.createInjector(new AppModule());
+ }
+}
diff --git a/src/main/java/ru/cft/booklib/Main.java b/src/main/java/ru/cft/booklib/application/Main.java
similarity index 76%
rename from src/main/java/ru/cft/booklib/Main.java
rename to src/main/java/ru/cft/booklib/application/Main.java
index 269ed63..1676047 100644
--- a/src/main/java/ru/cft/booklib/Main.java
+++ b/src/main/java/ru/cft/booklib/application/Main.java
@@ -1,9 +1,10 @@
-package ru.cft.booklib;
+package ru.cft.booklib.application;
import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.QuarkusApplication;
import io.quarkus.runtime.annotations.QuarkusMain;
+/** Класс для запуска приложения в IDE. */
@QuarkusMain
public class Main {
public static void main(String... args) {
@@ -15,9 +16,10 @@ public class Main {
}
public static class MyApp implements QuarkusApplication {
-
@Override
public int run(String... args){
+ InjectionInitializer.initDI();
+
Quarkus.waitForExit();
return 0;
}
diff --git a/src/main/java/ru/cft/booklib/controller/impl/BooksApiImpl.java b/src/main/java/ru/cft/booklib/controller/impl/BooksApiImpl.java
index b303d95..dc4e052 100644
--- a/src/main/java/ru/cft/booklib/controller/impl/BooksApiImpl.java
+++ b/src/main/java/ru/cft/booklib/controller/impl/BooksApiImpl.java
@@ -1,12 +1,35 @@
package ru.cft.booklib.controller.impl;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
import ru.cft.booklib.controller.BooksApi;
import ru.cft.booklib.model.Book;
import ru.cft.booklib.model.BookCreate;
+import ru.cft.booklib.service.BooksService;
import java.util.List;
public class BooksApiImpl implements BooksApi {
+ // /*
+ private final Provider booksService;
+
+ @Inject
+ public BooksApiImpl(Provider booksService) {
+ this.booksService = booksService;
+ }
+
+ @Override
+ public Book bookPost(BookCreate bookCreate) {
+ return booksService.get().addBook(bookCreate);
+ }
+
+ @Override
+ public List booksGet() {
+ return booksService.get().getBooks();
+ }
+ // */
+
+ /*
@Override
public Book bookPost(BookCreate bookCreate) {
return null;
@@ -20,4 +43,5 @@ public class BooksApiImpl implements BooksApi {
return List.of(book);
}
-}
+ */
+}
\ No newline at end of file
diff --git a/src/main/java/ru/cft/booklib/service/BooksService.java b/src/main/java/ru/cft/booklib/service/BooksService.java
new file mode 100644
index 0000000..0a633f6
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/BooksService.java
@@ -0,0 +1,15 @@
+package ru.cft.booklib.service;
+
+import ru.cft.booklib.model.Book;
+import ru.cft.booklib.model.BookCreate;
+
+import java.util.List;
+
+/** Сервис по работе с книгами. */
+public interface BooksService {
+ /** Добавляет книгу в библиотеку. */
+ Book addBook(BookCreate bookCreate);
+
+ /** Возвращает список книг библиотеки. */
+ List getBooks();
+}
diff --git a/src/main/java/ru/cft/booklib/service/ReadersService.java b/src/main/java/ru/cft/booklib/service/ReadersService.java
new file mode 100644
index 0000000..e994b23
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/ReadersService.java
@@ -0,0 +1,5 @@
+package ru.cft.booklib.service;
+
+/** Сервис по работе с читателями. */
+public interface ReadersService {
+}
diff --git a/src/main/java/ru/cft/booklib/service/TransactionsService.java b/src/main/java/ru/cft/booklib/service/TransactionsService.java
new file mode 100644
index 0000000..7c17e43
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/TransactionsService.java
@@ -0,0 +1,5 @@
+package ru.cft.booklib.service;
+
+/** Сервис по выдаче книг читателям. */
+public interface TransactionsService {
+}
diff --git a/src/main/java/ru/cft/booklib/service/impl/BooksServiceImpl.java b/src/main/java/ru/cft/booklib/service/impl/BooksServiceImpl.java
new file mode 100644
index 0000000..0d5db9c
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/impl/BooksServiceImpl.java
@@ -0,0 +1,45 @@
+package ru.cft.booklib.service.impl;
+
+import ru.cft.booklib.model.Book;
+import ru.cft.booklib.model.BookCreate;
+import ru.cft.booklib.service.BooksService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class BooksServiceImpl implements BooksService {
+ /** ^^^ Удалить после реализации репозитория. */
+ private static final ConcurrentHashMap books = new ConcurrentHashMap<>();
+
+ private static boolean isInit = false;
+ private static void init() {
+ if(isInit)
+ return;
+
+ isInit = true;
+ Book book = new Book();
+ book.id(1);
+ book.title("Java для начинающих");
+ book.authors(List.of("Иванов", "Петров"));
+ books.put(1, book);
+ }
+
+ @Override
+ public Book addBook(BookCreate bookCreate) {
+ Book book = new Book();
+
+ book.setId(books.size() + 1);
+ book.setTitle(bookCreate.getTitle());
+ book.setAuthors(bookCreate.getAuthors());
+
+ books.put(book.getId(), book);
+ return book;
+ }
+
+ @Override
+ public List getBooks() {
+ init();
+ return new ArrayList<>(books.values());
+ }
+}
diff --git a/src/main/java/ru/cft/booklib/service/impl/ReadersServiceImpl.java b/src/main/java/ru/cft/booklib/service/impl/ReadersServiceImpl.java
new file mode 100644
index 0000000..f9c2a1a
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/impl/ReadersServiceImpl.java
@@ -0,0 +1,7 @@
+package ru.cft.booklib.service.impl;
+
+import ru.cft.booklib.service.ReadersService;
+
+public class ReadersServiceImpl implements ReadersService {
+
+}
diff --git a/src/main/java/ru/cft/booklib/service/impl/TransactionsServiceImpl.java b/src/main/java/ru/cft/booklib/service/impl/TransactionsServiceImpl.java
new file mode 100644
index 0000000..e266520
--- /dev/null
+++ b/src/main/java/ru/cft/booklib/service/impl/TransactionsServiceImpl.java
@@ -0,0 +1,6 @@
+package ru.cft.booklib.service.impl;
+
+import ru.cft.booklib.service.TransactionsService;
+
+public class TransactionsServiceImpl implements TransactionsService {
+}