From 6a0b46e06bf075495c0e48273d498064f0ae86ea Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 12 Dec 2021 16:10:59 -0800 Subject: [PATCH] zig/db- add Package.create --- src/db/Package.zig | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/db/Package.zig b/src/db/Package.zig index 8d22be1..0ff6f3b 100644 --- a/src/db/Package.zig +++ b/src/db/Package.zig @@ -1,16 +1,19 @@ const std = @import("std"); const string = []const u8; const ulid = @import("ulid"); +const extras = @import("extras"); const _db = @import("./_db.zig"); const Version = _db.Version; const Time = _db.Time; +const User = _db.User; +const Remote = _db.Remote; const _internal = @import("./_internal.zig"); const db = &_internal.db; pub const Package = struct { - id: u64, + id: u64 = 0, uuid: ulid.ULID, owner: ulid.ULID, name: string, @@ -26,6 +29,26 @@ pub const Package = struct { pub const table_name = "packages"; + pub fn create(alloc: *std.mem.Allocator, owner: User, name: string, remote: Remote, rm_id: string, rm_name: string, desc: string, license: string, star_count: u64) !Package { + db.mutex.lock(); + defer db.mutex.unlock(); + + return try _internal.insert(alloc, &Package{ + .uuid = _internal.factory.newULID(), + .owner = owner.uuid, + .name = name, + .created_on = Time.now(), + .remote = remote.id, + .remote_id = rm_id, + .remote_name = rm_name, + .description = desc, + .license = license, + .latest_version = "", + .hook_secret = try extras.randomSlice(alloc, std.crypto.random, u8, 16), + .star_count = star_count, + }); + } + usingnamespace _internal.ByKeyGen(Package); pub fn latest(alloc: *std.mem.Allocator) ![]const Package {