Add list followers api calls
This commit is contained in:
parent
ebf8b34e15
commit
c49f1487a7
2 changed files with 58 additions and 1 deletions
|
@ -11,6 +11,7 @@ const services = struct {
|
||||||
const auth = @import("./services/auth.zig");
|
const auth = @import("./services/auth.zig");
|
||||||
const invites = @import("./services/invites.zig");
|
const invites = @import("./services/invites.zig");
|
||||||
const notes = @import("./services/notes.zig");
|
const notes = @import("./services/notes.zig");
|
||||||
|
const follows = @import("./services/follows.zig");
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const RegistrationOptions = struct {
|
pub const RegistrationOptions = struct {
|
||||||
|
@ -90,6 +91,40 @@ pub const TimelineResult = struct {
|
||||||
next_page: TimelineArgs,
|
next_page: TimelineArgs,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub const FollowQueryArgs = struct {
|
||||||
|
pub const OrderBy = services.follows.QueryArgs.OrderBy;
|
||||||
|
pub const Direction = services.follows.QueryArgs.Direction;
|
||||||
|
pub const PageDirection = services.follows.QueryArgs.PageDirection;
|
||||||
|
pub const Prev = services.follows.QueryArgs.Prev;
|
||||||
|
|
||||||
|
max_items: usize = 20,
|
||||||
|
|
||||||
|
order_by: OrderBy = .created_at,
|
||||||
|
|
||||||
|
direction: Direction = .descending,
|
||||||
|
|
||||||
|
prev: ?Prev = null,
|
||||||
|
|
||||||
|
page_direction: PageDirection = .forward,
|
||||||
|
|
||||||
|
fn from(args: services.follows.QueryArgs) FollowQueryArgs {
|
||||||
|
return .{
|
||||||
|
.max_items = args.max_items,
|
||||||
|
.order_by = args.order_by,
|
||||||
|
.direction = args.direction,
|
||||||
|
.prev = args.prev,
|
||||||
|
.page_direction = args.page_direction,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const FollowQueryResult = struct {
|
||||||
|
items: []services.follows.Follow,
|
||||||
|
|
||||||
|
prev_page: FollowQueryArgs,
|
||||||
|
next_page: FollowQueryArgs,
|
||||||
|
};
|
||||||
|
|
||||||
pub fn isAdminSetup(db: sql.Db) !bool {
|
pub fn isAdminSetup(db: sql.Db) !bool {
|
||||||
_ = services.communities.adminCommunityId(db) catch |err| switch (err) {
|
_ = services.communities.adminCommunityId(db) catch |err| switch (err) {
|
||||||
error.NotFound => return false,
|
error.NotFound => return false,
|
||||||
|
@ -405,5 +440,27 @@ fn ApiConn(comptime DbConn: type) type {
|
||||||
.next_page = TimelineArgs.from(result.next_page),
|
.next_page = TimelineArgs.from(result.next_page),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn getFollowers(self: *Self, user_id: Uuid, args: FollowQueryArgs) !FollowQueryResult {
|
||||||
|
var all_args = std.mem.zeroInit(services.follows.QueryArgs, args);
|
||||||
|
all_args.following_id = user_id;
|
||||||
|
const result = try services.follows.query(self.db, all_args, self.arena.allocator());
|
||||||
|
return TimelineResult{
|
||||||
|
.items = result.items,
|
||||||
|
.prev_page = FollowQueryArgs.from(result.prev_page),
|
||||||
|
.next_page = FollowQueryArgs.from(result.next_page),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getFollowing(self: *Self, user_id: Uuid, args: FollowQueryArgs) !FollowQueryResult {
|
||||||
|
var all_args = std.mem.zeroInit(services.follows.QueryArgs, args);
|
||||||
|
all_args.follower_id = user_id;
|
||||||
|
const result = try services.follows.query(self.db, all_args, self.arena.allocator());
|
||||||
|
return TimelineResult{
|
||||||
|
.items = result.items,
|
||||||
|
.prev_page = FollowQueryArgs.from(result.prev_page),
|
||||||
|
.next_page = FollowQueryArgs.from(result.next_page),
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ pub const QueryArgs = struct {
|
||||||
},
|
},
|
||||||
} = null,
|
} = null,
|
||||||
|
|
||||||
page_direction: PageDirection = null,
|
page_direction: PageDirection = .forward,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const QueryResult = struct {
|
pub const QueryResult = struct {
|
||||||
|
|
Loading…
Reference in a new issue