remove redundant fields
This commit is contained in:
parent
9bf0a35689
commit
d2ace3e125
@ -31,15 +31,12 @@ const Corpus = struct {
|
|||||||
// sorted by gid
|
// sorted by gid
|
||||||
groups: []Group,
|
groups: []Group,
|
||||||
|
|
||||||
// convenience users and groups by column
|
// columnar users and groups of the above
|
||||||
usersMulti: MultiArrayList(User),
|
usersMulti: MultiArrayList(User),
|
||||||
groupsMulti: MultiArrayList(Group),
|
groupsMulti: MultiArrayList(Group),
|
||||||
|
|
||||||
// pointing to `users` and `groups` slices above.
|
|
||||||
name2user: StringHashMap(usize),
|
name2user: StringHashMap(usize),
|
||||||
uid2user: AutoHashMap(u32, usize),
|
|
||||||
name2group: StringHashMap(usize),
|
name2group: StringHashMap(usize),
|
||||||
gid2group: AutoHashMap(u32, usize),
|
|
||||||
groupname2users: StringHashMap([]usize),
|
groupname2users: StringHashMap([]usize),
|
||||||
username2groups: StringHashMap([]usize),
|
username2groups: StringHashMap([]usize),
|
||||||
|
|
||||||
@ -72,20 +69,12 @@ const Corpus = struct {
|
|||||||
groupsMulti.appendAssumeCapacity(group);
|
groupsMulti.appendAssumeCapacity(group);
|
||||||
|
|
||||||
var name2user = StringHashMap(usize).init(allocator);
|
var name2user = StringHashMap(usize).init(allocator);
|
||||||
var uid2user = AutoHashMap(u32, usize).init(allocator);
|
|
||||||
var name2group = StringHashMap(usize).init(allocator);
|
var name2group = StringHashMap(usize).init(allocator);
|
||||||
var gid2group = AutoHashMap(u32, usize).init(allocator);
|
|
||||||
for (users) |*user, i| {
|
for (users) |*user, i| {
|
||||||
var res1 = try name2user.getOrPut(user.name);
|
var res1 = try name2user.getOrPut(user.name);
|
||||||
if (res1.found_existing)
|
if (res1.found_existing)
|
||||||
return error.Duplicate;
|
return error.Duplicate;
|
||||||
res1.value_ptr.* = i;
|
res1.value_ptr.* = i;
|
||||||
|
|
||||||
var res2 = try uid2user.getOrPut(user.uid);
|
|
||||||
if (res2.found_existing)
|
|
||||||
return error.Duplicate;
|
|
||||||
|
|
||||||
res2.value_ptr.* = i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (groups) |*group, i| {
|
for (groups) |*group, i| {
|
||||||
@ -93,10 +82,6 @@ const Corpus = struct {
|
|||||||
if (res1.found_existing)
|
if (res1.found_existing)
|
||||||
return error.Duplicate;
|
return error.Duplicate;
|
||||||
res1.value_ptr.* = i;
|
res1.value_ptr.* = i;
|
||||||
var res2 = try gid2group.getOrPut(group.gid);
|
|
||||||
if (res2.found_existing)
|
|
||||||
return error.Duplicate;
|
|
||||||
res2.value_ptr.* = i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var groupname2users = StringHashMap([]usize).init(allocator);
|
var groupname2users = StringHashMap([]usize).init(allocator);
|
||||||
@ -157,9 +142,7 @@ const Corpus = struct {
|
|||||||
.usersMulti = usersMulti,
|
.usersMulti = usersMulti,
|
||||||
.groupsMulti = groupsMulti,
|
.groupsMulti = groupsMulti,
|
||||||
.name2user = name2user,
|
.name2user = name2user,
|
||||||
.uid2user = uid2user,
|
|
||||||
.name2group = name2group,
|
.name2group = name2group,
|
||||||
.gid2group = gid2group,
|
|
||||||
.groupname2users = groupname2users,
|
.groupname2users = groupname2users,
|
||||||
.username2groups = username2groups_final,
|
.username2groups = username2groups_final,
|
||||||
};
|
};
|
||||||
@ -525,12 +508,8 @@ test "test corpus" {
|
|||||||
|
|
||||||
try testing.expectEqual(corpus.name2user.get("404"), null);
|
try testing.expectEqual(corpus.name2user.get("404"), null);
|
||||||
try testing.expectEqual(corpus.name2user.get("vidmantas").?, vidmantas);
|
try testing.expectEqual(corpus.name2user.get("vidmantas").?, vidmantas);
|
||||||
try testing.expectEqual(corpus.uid2user.get(42), null);
|
|
||||||
try testing.expectEqual(corpus.uid2user.get(128).?, vidmantas);
|
|
||||||
try testing.expectEqual(corpus.name2group.get("404"), null);
|
try testing.expectEqual(corpus.name2group.get("404"), null);
|
||||||
try testing.expectEqual(corpus.name2group.get("vidmantas").?, g_vidmantas);
|
try testing.expectEqual(corpus.name2group.get("vidmantas").?, g_vidmantas);
|
||||||
try testing.expectEqual(corpus.gid2group.get(42), null);
|
|
||||||
try testing.expectEqual(corpus.gid2group.get(128).?, g_vidmantas);
|
|
||||||
|
|
||||||
const membersOfAll = corpus.groupname2users.get("all").?;
|
const membersOfAll = corpus.groupname2users.get("all").?;
|
||||||
try testing.expectEqual(membersOfAll[0], name_name);
|
try testing.expectEqual(membersOfAll[0], name_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user