From 34d387138bcf97fc9a883126d2995fe72f54fcb3 Mon Sep 17 00:00:00 2001 From: CodingPhoenixx Date: Sun, 15 Feb 2026 12:39:39 +0100 Subject: [PATCH] Added base classes --- .gitignore | 2 +- .idea/git_toolbox_prj.xml | 31 ++++++++++ .../dev/coph/flightscore/backend/Backend.java | 57 ++++++++++++++++++- .../dev/coph/flightscore/backend/Main.java | 15 +++++ .../action/result/LoginActionResult.java | 11 ++++ .../flightscore/backend/config/Config.java | 36 ++++++++++++ .../coph/flightscore/backend/user/User.java | 19 +++++++ .../backend/user/UserProvider.java | 20 +++++++ .../backend/user/permission/Permission.java | 14 +++++ .../flightscore/backend/user/role/Role.java | 18 ++++++ 10 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 .idea/git_toolbox_prj.xml create mode 100644 src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java create mode 100644 src/main/java/dev/coph/flightscore/backend/config/Config.java create mode 100644 src/main/java/dev/coph/flightscore/backend/user/User.java create mode 100644 src/main/java/dev/coph/flightscore/backend/user/UserProvider.java create mode 100644 src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java create mode 100644 src/main/java/dev/coph/flightscore/backend/user/role/Role.java diff --git a/.gitignore b/.gitignore index 8a4f991..cf2f5a8 100644 --- a/.gitignore +++ b/.gitignore @@ -43,4 +43,4 @@ bin/ .DS_Store /logs -config.toml +/config diff --git a/.idea/git_toolbox_prj.xml b/.idea/git_toolbox_prj.xml new file mode 100644 index 0000000..eb31621 --- /dev/null +++ b/.idea/git_toolbox_prj.xml @@ -0,0 +1,31 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/dev/coph/flightscore/backend/Backend.java b/src/main/java/dev/coph/flightscore/backend/Backend.java index 6b2bc14..4e7b0ea 100644 --- a/src/main/java/dev/coph/flightscore/backend/Backend.java +++ b/src/main/java/dev/coph/flightscore/backend/Backend.java @@ -1,6 +1,61 @@ package dev.coph.flightscore.backend; -public class Backend { +import dev.coph.flightscore.backend.config.Config; +import dev.coph.simplelogger.Logger; +import dev.coph.simplerequest.server.WebServer; +import dev.coph.simplesql.adapter.DatabaseAdapter; +import dev.coph.simplesql.driver.DriverType; +import dev.coph.simpleutilities.config.ConfigurationManager; +import lombok.Getter; +import lombok.experimental.Accessors; +@Getter +@Accessors(fluent = true) +public class Backend { + private final Logger logger = Logger.of("Backend"); + private final ConfigurationManager configurationManager; + private final DatabaseAdapter databaseAdapter; + private final WebServer webServer; + + + public Backend() { + logger.info("Loading configuration..."); + this.configurationManager = new ConfigurationManager(); + Config configuration = configurationManager.configuration(Config.class); + logger.success("Configuration loaded!"); + logger.info("Preparing database..."); + this.databaseAdapter = new DatabaseAdapter.Builder() + .driverType(DriverType.MARIADB) + .host(configuration.database_url()) + .port(configuration.database_port()) + .database(configuration.database_databaseName()) + .user(configuration.database_username()) + .password(configuration.database_password()) + .build(); + logger.success("Database ready!"); + logger.info("Preparing web server..."); + this.webServer = new WebServer(configuration.server_port()); + logger.success("Web server ready!"); + } + + public void onEnable() { + logger.info("Loading routes..."); + + logger.success("Routes loaded!"); + + logger.info("Starting database..."); + databaseAdapter.connect(); + logger.success("Database started!"); + + logger.info("Starting web server..."); + webServer.start(); + logger.success("Web server started!"); + } + + public void onDisable() { + logger.info("Stopping services..."); + + } + } diff --git a/src/main/java/dev/coph/flightscore/backend/Main.java b/src/main/java/dev/coph/flightscore/backend/Main.java index 7ef33a1..3168043 100644 --- a/src/main/java/dev/coph/flightscore/backend/Main.java +++ b/src/main/java/dev/coph/flightscore/backend/Main.java @@ -1,10 +1,25 @@ package dev.coph.flightscore.backend; +import dev.coph.simplelogger.GenericLogger; +import dev.coph.simplelogger.LogLevel; + public class Main { + private static Backend backend; static void main(String[] args) { + GenericLogger.instance().consoleLogLevel(LogLevel.DEBUG); + GenericLogger.instance().fileLogLevel(LogLevel.INFO); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + if (backend != null) backend.onDisable(); + })); + GenericLogger.info("Preparing backend..."); + backend = new Backend(); + GenericLogger.success("Backend ready!"); + GenericLogger.info("Starting backend..."); + backend.onEnable(); + GenericLogger.success("Backend started!"); } diff --git a/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java b/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java new file mode 100644 index 0000000..bea21ed --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java @@ -0,0 +1,11 @@ +package dev.coph.flightscore.backend.action.result; + +import dev.coph.flightscore.backend.user.User; + +public class LoginActionResult { + + private User user; + private String accessToken; + private String refreshToken; + +} diff --git a/src/main/java/dev/coph/flightscore/backend/config/Config.java b/src/main/java/dev/coph/flightscore/backend/config/Config.java new file mode 100644 index 0000000..f7b22a0 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/config/Config.java @@ -0,0 +1,36 @@ +package dev.coph.flightscore.backend.config; + +import dev.coph.simpleutilities.config.AbstractConfiguration; +import dev.coph.simpleutilities.config.ConfigurationFile; +import dev.coph.simpleutilities.config.DefaultValue; +import dev.coph.simpleutilities.config.provider.TomlConfigurationProvider; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +@ConfigurationFile( + description = "This is the configuration of the FlightScore backend. Only change if you know what you do.", + path = "config/backend.yaml", + type = TomlConfigurationProvider.class +) +public class Config extends AbstractConfiguration { + + @DefaultValue("8080") + private int server_port; + + @DefaultValue("127.0.0.1") + private String database_url; + @DefaultValue("3306") + private int database_port; + @DefaultValue("flightscore") + private String database_databaseName; + @DefaultValue("root") + private String database_password; + @DefaultValue("root") + private String database_username; + + @DefaultValue("7a0c878e20c039349ef3fc5e0bebcedeb1441c123c118b243ee196dc6246cfd7") + private String jwt_secret; + +} diff --git a/src/main/java/dev/coph/flightscore/backend/user/User.java b/src/main/java/dev/coph/flightscore/backend/user/User.java new file mode 100644 index 0000000..e2de283 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/user/User.java @@ -0,0 +1,19 @@ +package dev.coph.flightscore.backend.user; + +import dev.coph.flightscore.backend.user.role.Role; +import dev.coph.simpleutilities.ulid.ULID; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +public class User { + + private ULID id; + private String firstName; + private String lastName; + private String email; + private String phoneNumber; + private Role role; + +} diff --git a/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java new file mode 100644 index 0000000..ace357f --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java @@ -0,0 +1,20 @@ +package dev.coph.flightscore.backend.user; + +import dev.coph.flightscore.backend.Backend; +import dev.coph.flightscore.backend.action.result.LoginActionResult; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +public class UserProvider { + private final Backend backend; + + + + + public LoginActionResult login(String email, String password) { + + return null; + } + + +} diff --git a/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java new file mode 100644 index 0000000..09fab8c --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java @@ -0,0 +1,14 @@ +package dev.coph.flightscore.backend.user.permission; + +import dev.coph.simpleutilities.ulid.ULID; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +public class Permission { + + private ULID id; + private String name; + +} diff --git a/src/main/java/dev/coph/flightscore/backend/user/role/Role.java b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java new file mode 100644 index 0000000..80cccdb --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java @@ -0,0 +1,18 @@ +package dev.coph.flightscore.backend.user.role; + +import dev.coph.flightscore.backend.user.permission.Permission; +import dev.coph.simpleutilities.ulid.ULID; +import lombok.Getter; +import lombok.experimental.Accessors; + +import java.util.HashSet; + +@Getter +@Accessors(fluent = true) +public class Role { + + private ULID id; + private String name; + private HashSet permissions = new HashSet<>(); + +}