diff --git a/src/insert.zig b/src/insert.zig index bf06341..b102f3e 100644 --- a/src/insert.zig +++ b/src/insert.zig @@ -7,7 +7,7 @@ const _sql = @import("sql.zig"); const repository = @import("repository.zig"); /// Type of an insertable column. Insert shape should be composed of only these. -pub fn Insertable(comptime ValueType: type) type { +fn InsertableColumn(comptime ValueType: type) type { return struct { value: ?ValueType = null, default: bool = false, @@ -15,7 +15,7 @@ pub fn Insertable(comptime ValueType: type) type { } /// Build an insertable structure type from a normal structure. -pub fn InsertableStruct(comptime StructType: type) type { +pub fn Insertable(comptime StructType: type) type { // Get type info of the given structure. const typeInfo = @typeInfo(StructType); @@ -23,7 +23,7 @@ pub fn InsertableStruct(comptime StructType: type) type { var newFields: [typeInfo.Struct.fields.len]std.builtin.Type.StructField = undefined; for (typeInfo.Struct.fields, &newFields) |field, *newField| { // Create a new field for each field of the given struct. - const newFieldType = Insertable(field.type); + const newFieldType = InsertableColumn(field.type); newField.* = std.builtin.Type.StructField{ .name = field.name, .type = newFieldType, @@ -47,7 +47,7 @@ pub fn InsertableStruct(comptime StructType: type) type { /// Repository insert query configuration structure. pub fn RepositoryInsertConfiguration(comptime InsertShape: type) type { return struct { - values: []const InsertShape = undefined, + values: []const Insertable(InsertShape) = undefined, returning: ?_sql.SqlParams = null, }; } @@ -124,7 +124,7 @@ pub fn RepositoryInsert(comptime Model: type, comptime TableShape: type, comptim sql: ?[]const u8 = null, /// Parse given model or shape and put the result in newValue. - fn parseData(newValue: *InsertShape, value: anytype) !void { + fn parseData(newValue: *Insertable(InsertShape), value: anytype) !void { // If the given value is a model, first convert it to its SQL equivalent. if (@TypeOf(value) == Model) { return parseData(newValue, try repositoryConfig.toSql(value)); @@ -137,7 +137,7 @@ pub fn RepositoryInsert(comptime Model: type, comptime TableShape: type, comptim /// Parse one value to insert. fn parseOne(self: *Self, value: anytype) !void { - const newValues = try self.arena.allocator().alloc(InsertShape, 1); + const newValues = try self.arena.allocator().alloc(Insertable(InsertShape), 1); // Parse the given value. try parseData(&newValues[0], value); self.insertConfig.values = newValues; @@ -145,7 +145,7 @@ pub fn RepositoryInsert(comptime Model: type, comptime TableShape: type, comptim /// Parse a slice of values to insert. fn parseSlice(self: *Self, value: anytype) !void { - const newValues = try self.arena.allocator().alloc(InsertShape, value.len); + const newValues = try self.arena.allocator().alloc(Insertable(InsertShape), value.len); for (0..value.len) |i| { // Parse each value in the given slice. try parseData(&newValues[i], value[i]); diff --git a/src/root.zig b/src/root.zig index e70a877..ba51afe 100644 --- a/src/root.zig +++ b/src/root.zig @@ -10,7 +10,6 @@ pub const RepositoryConfiguration = repository.RepositoryConfiguration; pub const RepositoryResult = repository.RepositoryResult; pub const Insertable = insert.Insertable; -pub const InsertableStruct = insert.InsertableStruct; pub const QueryParameter = _sql.QueryParameter; pub const SqlParams = _sql.SqlParams; diff --git a/tests/composite.zig b/tests/composite.zig index 9b46621..c1c316a 100644 --- a/tests/composite.zig +++ b/tests/composite.zig @@ -59,10 +59,10 @@ const CompositeModelRepository = zrm.Repository(CompositeModel, CompositeModelTa .table = "composite_models", // Insert shape used by default for inserts in the repository. - .insertShape = zrm.InsertableStruct(struct { + .insertShape = struct { secondcol: []const u8, label: []const u8, - }), + }, .key = &[_][]const u8{"firstcol", "secondcol"}, diff --git a/tests/repository.zig b/tests/repository.zig index 73bdb0a..6edb1da 100644 --- a/tests/repository.zig +++ b/tests/repository.zig @@ -68,8 +68,8 @@ const MyModelRepository = zrm.Repository(MyModel, MyModelTable, .{ // Insert shape used by default for inserts in the repository. .insertShape = struct { - name: zrm.Insertable([]const u8), - amount: zrm.Insertable(f64), + name: []const u8, + amount: f64, }, .key = &[_][]const u8{"id"},