Skip to content

Conversation

@P0nk
Copy link
Owner

@P0nk P0nk commented Feb 24, 2023

Problems:

  • The database code in Cosmic is all over the place. There's no real separation of concerns which has led to code that is hard to read and hard to maintain.
  • MySQL is old. PostgreSQL follows the SQL standard more closely and has a lot of advanced features.
  • The database design is lackluster. There are missing key constraints, inconsistent naming, unused tables & columns and probably more issues.
  • The initial creation of tables and static data (drops, shop items, etc.) is error prone. It requires manual work and is one of the main issues newcomers struggle with.

Solutions:

  • Clearly separating database code from the rest with repository classes.
  • Switch to PostgreSQL
  • Rewrite the tables from the ground up
  • Use a database migration tool. Currently that ool is Flyway, but I'm not opposed to switching to Liquibase as it has quite a few useful features.

P0nk added 30 commits February 24, 2023 21:49
First step in my plan to switch away from MySQL.
Only makes a difference if there is
a large amount of notes in the database.
Better be safe than sorry.
This wouldn't be a problem in the first case,
if there was a foreign key connection between
note and character tables.
Can't add that quite yet though.
This way you can connect with your favorite db client
These are going to be handy soon,
as I'm about to add Caffeine for caching.
MakerProcessor is such a mess...
Preparing for change in Command#handle,
which is going to take a CommandContext as an additional argument.
This way we can pass in command dependencies in a safe way
instead of requiring them to access static methods.
CommandContext is the carrier of dependencies.
Currently, it only carries a DropProvider, but
it will grow bit by bit as more static singletons
and other similar structures get refactored.
P0nk added 30 commits September 29, 2024 07:52
The state is not set properly on logout though, so once you log out you can't log back in
Can nog log in, enter game, exit game and re-login successfully.
Works by loading all ip bans on startup and querying the collection in memory
rather than making calls on every login.
Works by loading all hwid bans on startup and querying the collection in memory
rather than making calls on every login.
Works just like ip and hwid bans in that they are loaded on startup
Almost rid of all db queries in Client
Finally rid of all db code in Client
# Conflicts:
#	database/sql/1-db_database.sql
#	docker-compose.yml
#	pom.xml
#	scripts/npc/mapleTV.js
#	src/main/java/net/server/Server.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants