Add config file

This commit is contained in:
jaina heartles 2022-07-29 23:14:42 -07:00
parent 99192bccdd
commit 40a2391942
3 changed files with 26 additions and 5 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
**/zig-out
**/zig-cache
**.db
/config.json

View file

@ -2,10 +2,10 @@ const std = @import("std");
const util = @import("util");
const db = @import("./db.zig");
const models = @import("./db/models.zig");
pub const DateTime = util.DateTime;
pub const Uuid = util.Uuid;
const Config = @import("./main.zig").Config;
const PwHash = std.crypto.pwhash.scrypt;
const pw_hash_params = PwHash.Params.interactive;
@ -101,13 +101,15 @@ pub fn initThreadPrng(seed: u64) void {
pub const ApiSource = struct {
db: db.Database,
internal_alloc: std.mem.Allocator,
config: Config,
pub const Conn = ApiConn(db.Database);
pub fn init(alloc: std.mem.Allocator) !ApiSource {
pub fn init(alloc: std.mem.Allocator, cfg: Config) !ApiSource {
return ApiSource{
.db = try db.Database.init(),
.internal_alloc = alloc,
.config = cfg,
};
}

View file

@ -34,11 +34,13 @@ const router = Router{
pub const RequestServer = struct {
alloc: std.mem.Allocator,
api: api.ApiSource,
config: Config,
fn init(alloc: std.mem.Allocator) !RequestServer {
fn init(alloc: std.mem.Allocator, config: Config) !RequestServer {
return RequestServer{
.alloc = alloc,
.api = try api.ApiSource.init(alloc),
.api = try api.ApiSource.init(alloc, config),
.config = config,
};
}
@ -63,9 +65,25 @@ pub const RequestServer = struct {
}
};
pub const Config = struct {
host: []const u8,
};
fn loadConfig(alloc: std.mem.Allocator) !Config {
var file = try std.fs.cwd().openFile("config.json", .{});
defer file.close();
const bytes = try file.reader().readAllAlloc(alloc, 1 << 63);
defer alloc.free(bytes);
var ts = std.json.TokenStream.init(bytes);
return std.json.parse(Config, &ts, .{ .allocator = alloc });
}
pub fn main() anyerror!void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
var srv = try RequestServer.init(gpa.allocator());
const cfg = try loadConfig(gpa.allocator());
var srv = try RequestServer.init(gpa.allocator(), cfg);
api.initThreadPrng(@bitCast(u64, std.time.milliTimestamp()));
return srv.listenAndRun(std.net.Address.parseIp("0.0.0.0", 8080) catch unreachable);
}