summaryrefslogtreecommitdiff
path: root/backend/src
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-14 01:06:17 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-14 01:06:17 +0500
commitcc133dd2e36c9eee7f04a29322e5a18181971189 (patch)
tree09cc108b5410aa107bf07129c3b13f5eab6f43dd /backend/src
parenta1473d2474c93e1be9a786ced3b40bbdff45fff6 (diff)
db connection
Diffstat (limited to 'backend/src')
-rw-r--r--backend/src/API/WeaponsAPI.zig24
-rw-r--r--backend/src/Database/Connection.zig28
-rw-r--r--backend/src/Models/RangedWeapon.zig13
-rw-r--r--backend/src/main.zig11
-rw-r--r--backend/src/root.zig4
-rw-r--r--backend/src/tests.zig7
6 files changed, 72 insertions, 15 deletions
diff --git a/backend/src/API/WeaponsAPI.zig b/backend/src/API/WeaponsAPI.zig
new file mode 100644
index 0000000..65e3fe8
--- /dev/null
+++ b/backend/src/API/WeaponsAPI.zig
@@ -0,0 +1,24 @@
+const httpz = @import("httpz");
+const model = @import("../Models/RangedWeapon.zig");
+
+pub fn RegisterEndpoints(router: *httpz.Router(void, *const fn (*httpz.request.Request, *httpz.response.Response) anyerror!void)) void {
+ router.get("/weapons", testEndpoint, .{});
+}
+
+fn testEndpoint(_: *httpz.Request, res: *httpz.Response) !void {
+ const testType: model.RangedWeaponType = .{
+ .Name = "BudgetArms C-13",
+ .WeaponType = "P",
+ .Accuracy = -1,
+ .Concealability = "P",
+ .Avaliability = "E",
+ .Damage = "1D6",
+ .Ammunition = "5mm",
+ .NumberOfShots = 8,
+ .RateOfFire = 2,
+ .Reliability = "ST"
+ };
+
+ res.status = 200;
+ try res.json(testType, .{});
+}
diff --git a/backend/src/Database/Connection.zig b/backend/src/Database/Connection.zig
new file mode 100644
index 0000000..638d92b
--- /dev/null
+++ b/backend/src/Database/Connection.zig
@@ -0,0 +1,28 @@
+const std = @import("std");
+const pg = @import("pg");
+const dotenv = @import("dotenv");
+
+var pool: *pg.Pool = undefined;
+
+pub fn Connect(alloc: std.mem.Allocator) !void {
+ var env = try dotenv.init(alloc, ".env");
+ defer env.deinit();
+
+ pool = try pg.Pool.init(alloc, .{
+ .size = 5,
+ .connect = .{
+ .port = 5432,
+ .host = "localhost"
+ },
+ .auth = .{
+ .database = "cyber2020",
+ .username = env.get("PG_USERNAME") orelse unreachable,
+ .password = env.get("PG_PASSWORD") orelse unreachable,
+ .timeout = 10_000
+ }
+ });
+}
+
+pub fn Disconnect() void {
+ pool.deinit();
+}
diff --git a/backend/src/Models/RangedWeapon.zig b/backend/src/Models/RangedWeapon.zig
index 7ec1f01..bfc40b6 100644
--- a/backend/src/Models/RangedWeapon.zig
+++ b/backend/src/Models/RangedWeapon.zig
@@ -1,6 +1,8 @@
const std = @import("std");
pub const RangedWeaponType = struct {
+ Name: []const u8,
+
WeaponType: []const u8,
Accuracy: i8,
Concealability: []const u8,
@@ -29,8 +31,11 @@ pub const RangedWeaponType = struct {
}
};
-test "CompactNotation" {
- var testType: RangedWeaponType = .{
+// ==================== tests ====================
+
+fn getTestType() RangedWeaponType {
+ return .{
+ .Name = "any",
.WeaponType = "P",
.Accuracy = -1,
.Concealability = "P",
@@ -41,6 +46,10 @@ test "CompactNotation" {
.RateOfFire = 2,
.Reliability = "ST"
};
+}
+
+test "CompactNotation" {
+ var testType = getTestType();
try std.testing.expectEqualStrings(
"P/-1/P/E/1D6(5mm)/8/2/ST",
diff --git a/backend/src/main.zig b/backend/src/main.zig
index d2f9a1f..951a86c 100644
--- a/backend/src/main.zig
+++ b/backend/src/main.zig
@@ -1,7 +1,7 @@
const std = @import("std");
const backend = @import("backend");
const httpz = @import("httpz");
-const tests = @import("tests.zig");
+const db = @import("Database/Connection.zig");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
@@ -16,9 +16,16 @@ pub fn main() !void {
server.deinit();
}
+
var router = try server.router(.{});
router.get("/", index, .{});
+ @import("API/WeaponsAPI.zig").RegisterEndpoints(router);
+
+ // PSQL connection
+ try db.Connect(allocator);
+ defer db.Disconnect();
+
try server.listen();
}
@@ -28,5 +35,5 @@ fn index(_: *httpz.Request, res: *httpz.Response) !void {
}
test "TestRunner" {
- std.testing.refAllDecls(@This());
+ _ = @import("Models/RangedWeapon.zig");
}
diff --git a/backend/src/root.zig b/backend/src/root.zig
index 94c7cd0..f8903fa 100644
--- a/backend/src/root.zig
+++ b/backend/src/root.zig
@@ -17,7 +17,3 @@ pub fn bufferedPrint() !void {
pub fn add(a: i32, b: i32) i32 {
return a + b;
}
-
-test "basic add functionality" {
- try std.testing.expect(add(3, 7) == 10);
-}
diff --git a/backend/src/tests.zig b/backend/src/tests.zig
deleted file mode 100644
index 3c09b99..0000000
--- a/backend/src/tests.zig
+++ /dev/null
@@ -1,7 +0,0 @@
-const std = @import("std");
-const ranged = @import("Models/RangedWeapon.zig");
-
-
-test "Runner" {
- std.testing.refAllDecls(@This());
-}