From c300c9995fc4811d78e2983ab96ed436c8f1242e Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Fri, 8 May 2020 14:16:56 +0200 Subject: [PATCH] Redis backend works. --- server.conf | 5 +++++ source/server/{accounts.d => accounts/base.d} | 2 +- source/server/{ => accounts}/redis.d | 13 +++++++++--- source/server/server.d | 20 ++++++++++++++++--- 4 files changed, 33 insertions(+), 7 deletions(-) rename source/server/{accounts.d => accounts/base.d} (94%) rename source/server/{ => accounts}/redis.d (89%) diff --git a/server.conf b/server.conf index 993964c..a9199b5 100644 --- a/server.conf +++ b/server.conf @@ -21,6 +21,11 @@ } }, "database" : { + "type" : "redis", + "redis" : { + "address" : "127.0.0.1", + "port" : "6379" + } }, "admin" : { diff --git a/source/server/accounts.d b/source/server/accounts/base.d similarity index 94% rename from source/server/accounts.d rename to source/server/accounts/base.d index dd805ed..a44e06d 100644 --- a/source/server/accounts.d +++ b/source/server/accounts/base.d @@ -1,4 +1,4 @@ -module server.accounts; +module server.accounts.base; /** * This represents the accounts management system of diff --git a/source/server/redis.d b/source/server/accounts/redis.d similarity index 89% rename from source/server/redis.d rename to source/server/accounts/redis.d index 885e67e..8c94da1 100644 --- a/source/server/redis.d +++ b/source/server/accounts/redis.d @@ -1,13 +1,13 @@ -module server.redis; +module server.accounts.redis; import vibe.vibe; -import server.accounts : BesterDataStore; +import server.accounts.base : BesterDataStore; /** * This represents a Redis datastore for the Bester * server's account management system. */ -public final class RedisDatastore : BesterDataStore +public final class RedisDataStore : BesterDataStore { /** @@ -30,6 +30,13 @@ public final class RedisDatastore : BesterDataStore { redisClient = new RedisClient(address, port); redisDatabase = redisClient.getDatabase(0); + // createAccount("deavmi", "poes"); + } + + override public bool userExists(string username) + { + /* TODO: Implement me */ + return true; } override public bool authenticate(string username, string password) diff --git a/source/server/server.d b/source/server/server.d index 4aeebc2..f812ee2 100644 --- a/source/server/server.d +++ b/source/server/server.d @@ -11,8 +11,8 @@ import handlers.handler : MessageHandler; import listeners.listener : BesterListener; import connection.connection : BesterConnection; import server.informer.informer : BesterInformer; -import server.accounts : BesterDataStore; - +import server.accounts.base : BesterDataStore; +import server.accounts.redis : RedisDataStore; /** * Represents an instance of a Bester server. @@ -116,7 +116,21 @@ public final class BesterServer /* TODO: Add comment, implement me */ private void setupDatabase(JSONValue databaseBlock) { - + /* Get the type */ + string dbType = databaseBlock["type"].str(); + + if(cmp(dbType, "redis") == 0) + { + /* get the redis block */ + JSONValue redisBlock = databaseBlock["redis"]; + + /* Get information */ + string address = redisBlock["address"].str(); + ushort port = to!(ushort)(redisBlock["port"].str()); + + /* Create the redis datastore */ + dataStore = new RedisDataStore(address, port); + } } /**