12 Commits

Author SHA1 Message Date
fusion32
20ca1cf661 store world hostname and resolve at runtime 2025-08-08 12:11:36 -03:00
fusion32
634554a0df fix problem with concurrent writes + implement website queries
There was a problem with concurrent writes not being visible
until after restart, due to how cached prepared statements work
with SQLite (see comment in `database.cc`).
2025-08-01 19:23:13 -03:00
fusion32
82b82dca7d improvements and bug fixes
- Add support for SIGINT and SIGTERM signals for graceful termination.
- Properly check premium account status with `EVICT_FREE_ACCOUNTS`
  query.
- Properly check if character is already online before failing game
  login with "too many characters" error.
- Overall cleanup.
2025-07-22 22:22:01 -03:00
fusion32
29f6d814a2 impl LOGIN_ACCOUNT to be used with the login server 2025-07-17 01:02:33 -03:00
fusion32
5463c34177 finish game queries 2025-07-15 23:37:52 -03:00
fusion32
8bc672f711 impl banishment, deaths, and buddies queries 2025-07-14 19:46:36 -03:00
fusion32
c0f9ee43af impl BANISH_ACCOUNT 2025-07-13 13:16:38 -03:00
fusion32
f827fcc848 reorganize query functions and impl SET_NOTATION 2025-07-13 10:04:53 -03:00
fusion32
1cad8468cb house related queries 2025-07-12 20:44:10 -03:00
fusion32
ac41dc912d add TransactionScope 2025-07-11 12:30:22 -03:00
fusion32
3ab6d1d312 implement more queries + overall improvements 2025-07-11 11:55:03 -03:00
fusion32
8dbd1d39e3 bare bones query manager
This is a bare bones query manager that will respond just enough
queries to get the server running. The overall structure of the
tables should be almost set but we'd need to handle all queries to
get the server running properly.
  It uses the SQLite3 3.50.2 amalgamation for a database backend so
we can completely avoid having to spin up yet another service for a
separate database system, effectively turning the query manager into
the database itself. This also means that other services such as the
login server and website must go through it to access the data but
it shouldn't be too difficult to replicate the querying mechanism
from the server.
  This design choice was made with a single game server in mind. The
networking protocol is NOT encrypted at all and won't accept remote
connections. For a fully multi-world distributed infrastructure, a
distributed database system like PostgreSQL and MySQL should be
considered.
2025-07-10 16:57:09 -03:00