diff --git a/api/pom.xml b/api/pom.xml
index afe8d2c..de32b0b 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -17,11 +17,5 @@
java-events
1.1.0.0
-
-
- tools.jackson.core
- jackson-databind
- 3.0.3
-
\ No newline at end of file
diff --git a/api/src/main/java/ru/kirillius/XCP/Commons/Config.java b/api/src/main/java/ru/kirillius/XCP/Commons/Config.java
index 154c954..b992cde 100644
--- a/api/src/main/java/ru/kirillius/XCP/Commons/Config.java
+++ b/api/src/main/java/ru/kirillius/XCP/Commons/Config.java
@@ -2,7 +2,8 @@ package ru.kirillius.XCP.Commons;
import java.io.File;
-public interface Config {
+public interface
+Config {
File getLoadedConfigFile();
diff --git a/api/src/main/java/ru/kirillius/XCP/Commons/ConfigManager.java b/api/src/main/java/ru/kirillius/XCP/Commons/ConfigManager.java
index 251358e..453364f 100644
--- a/api/src/main/java/ru/kirillius/XCP/Commons/ConfigManager.java
+++ b/api/src/main/java/ru/kirillius/XCP/Commons/ConfigManager.java
@@ -1,12 +1,14 @@
package ru.kirillius.XCP.Commons;
+import java.io.File;
import java.io.IOException;
public interface ConfigManager {
+ File getConfigFile();
boolean isExist();
- Config load();
+ Config load() throws IOException;
Config create();
diff --git a/api/src/main/java/ru/kirillius/XCP/Commons/Context.java b/api/src/main/java/ru/kirillius/XCP/Commons/Context.java
index af8995d..15f5ccc 100644
--- a/api/src/main/java/ru/kirillius/XCP/Commons/Context.java
+++ b/api/src/main/java/ru/kirillius/XCP/Commons/Context.java
@@ -1,7 +1,10 @@
package ru.kirillius.XCP.Commons;
+import ru.kirillius.XCP.Logging.LoggingSystem;
import ru.kirillius.XCP.Security.SecurityManager;
+import java.util.List;
+
public interface Context {
Config getConfig();
@@ -12,4 +15,8 @@ public interface Context {
void shutdown();
SecurityManager getSecurityManager();
+
+ LoggingSystem getLoggingSystem();
+
+ List getLaunchArgs();
}
diff --git a/api/src/main/java/ru/kirillius/XCP/Logging/LogLevel.java b/api/src/main/java/ru/kirillius/XCP/Logging/LogLevel.java
new file mode 100644
index 0000000..6c347e9
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Logging/LogLevel.java
@@ -0,0 +1,7 @@
+package ru.kirillius.XCP.Logging;
+
+public enum LogLevel {
+ INFO,
+ ERROR,
+ WARNING
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Logging/LogMessage.java b/api/src/main/java/ru/kirillius/XCP/Logging/LogMessage.java
new file mode 100644
index 0000000..2624589
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Logging/LogMessage.java
@@ -0,0 +1,9 @@
+package ru.kirillius.XCP.Logging;
+
+import lombok.Builder;
+
+import java.time.Instant;
+
+@Builder
+public record LogMessage(LogLevel level, Instant date, String message) {
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Logging/Logger.java b/api/src/main/java/ru/kirillius/XCP/Logging/Logger.java
new file mode 100644
index 0000000..c1eb81f
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Logging/Logger.java
@@ -0,0 +1,15 @@
+package ru.kirillius.XCP.Logging;
+
+public interface Logger {
+
+
+ void info(String message);
+
+ void warning(String message);
+
+ void error(String message);
+
+ void error(String message, Throwable error);
+
+ void error(Throwable error);
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Logging/LoggingSystem.java b/api/src/main/java/ru/kirillius/XCP/Logging/LoggingSystem.java
new file mode 100644
index 0000000..ac7266f
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Logging/LoggingSystem.java
@@ -0,0 +1,14 @@
+package ru.kirillius.XCP.Logging;
+
+import ru.kirillius.java.utils.events.EventHandler;
+
+import java.io.Closeable;
+
+public interface LoggingSystem extends Closeable {
+
+ Logger createLogger(Class> clazz);
+
+ Logger createLogger(String name);
+
+ EventHandler getEventHandler();
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Persistence/Entities/ApiToken.java b/api/src/main/java/ru/kirillius/XCP/Persistence/Entities/ApiToken.java
new file mode 100644
index 0000000..41845a7
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Persistence/Entities/ApiToken.java
@@ -0,0 +1,27 @@
+package ru.kirillius.XCP.Persistence.Entities;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import ru.kirillius.XCP.Persistence.PersistenceEntity;
+
+import java.time.Instant;
+import java.util.Date;
+
+public interface ApiToken extends PersistenceEntity {
+
+ User getUser();
+
+ void setUser(User user);
+
+ String getName();
+
+ void setName(String name);
+
+ Date getExpirationDate();
+
+ void setExpirationDate(Date expirationDate);
+
+ @JsonIgnore
+ default boolean isExpired() {
+ return getExpirationDate().toInstant().isBefore(Instant.now());
+ }
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Persistence/PersistenceException.java b/api/src/main/java/ru/kirillius/XCP/Persistence/PersistenceException.java
new file mode 100644
index 0000000..aed661b
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Persistence/PersistenceException.java
@@ -0,0 +1,15 @@
+package ru.kirillius.XCP.Persistence;
+
+public class PersistenceException extends RuntimeException {
+ public PersistenceException(String message) {
+ super(message);
+ }
+
+ public PersistenceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PersistenceException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Persistence/Repositories/ApiTokenRepository.java b/api/src/main/java/ru/kirillius/XCP/Persistence/Repositories/ApiTokenRepository.java
new file mode 100644
index 0000000..94b7627
--- /dev/null
+++ b/api/src/main/java/ru/kirillius/XCP/Persistence/Repositories/ApiTokenRepository.java
@@ -0,0 +1,10 @@
+package ru.kirillius.XCP.Persistence.Repositories;
+
+import ru.kirillius.XCP.Commons.StreamHandler;
+import ru.kirillius.XCP.Persistence.Entities.ApiToken;
+import ru.kirillius.XCP.Persistence.Entities.User;
+import ru.kirillius.XCP.Persistence.Repository;
+
+public interface ApiTokenRepository extends Repository {
+ StreamHandler getByUser(User user);
+}
diff --git a/api/src/main/java/ru/kirillius/XCP/Persistence/Repository.java b/api/src/main/java/ru/kirillius/XCP/Persistence/Repository.java
index c95254b..014f579 100644
--- a/api/src/main/java/ru/kirillius/XCP/Persistence/Repository.java
+++ b/api/src/main/java/ru/kirillius/XCP/Persistence/Repository.java
@@ -11,23 +11,23 @@ import java.util.UUID;
public interface Repository {
E create();
- E load(long id);
+ E get(long id);
- E load(UUID uuid);
+ E get(UUID uuid);
- StreamHandler load(Collection ids);
+ StreamHandler get(Collection ids);
StreamHandler search(String query, Collection