[F3] driver/users implementation
This commit is contained in:
parent
2a56eecf69
commit
8dfeb1210c
4 changed files with 121 additions and 6 deletions
|
@ -22,8 +22,23 @@ func (o *common) ListPage(ctx context.Context, page int) generic.ChildrenSlice {
|
||||||
return generic.NewChildrenSlice(0)
|
return generic.NewChildrenSlice(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *common) GetNativeID() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *common) SetNative(native any) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *common) getPageSize() int {
|
||||||
|
return o.getTreeDriver().GetPageSize()
|
||||||
|
}
|
||||||
|
|
||||||
func (o *common) getKind() generic.Kind {
|
func (o *common) getKind() generic.Kind {
|
||||||
return o.GetNode().GetKind()
|
return o.GetNode().GetKind()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *common) getTreeDriver() *treeDriver {
|
||||||
|
return o.GetTreeDriver().(*treeDriver)
|
||||||
|
}
|
||||||
|
|
||||||
func (o *common) IsNull() bool { return false }
|
func (o *common) IsNull() bool { return false }
|
||||||
|
|
|
@ -26,14 +26,66 @@ func (o *treeDriver) Init() {
|
||||||
|
|
||||||
func (o *treeDriver) Factory(ctx context.Context, kind generic.Kind) generic.NodeDriverInterface {
|
func (o *treeDriver) Factory(ctx context.Context, kind generic.Kind) generic.NodeDriverInterface {
|
||||||
switch kind {
|
switch kind {
|
||||||
case f3_tree.KindUsers:
|
|
||||||
return newUsers()
|
|
||||||
case f3_tree.KindOrganizations:
|
|
||||||
return newOrganizations()
|
|
||||||
case f3_tree.KindTopics:
|
|
||||||
return newTopics()
|
|
||||||
case f3_tree.KindForge:
|
case f3_tree.KindForge:
|
||||||
return newForge()
|
return newForge()
|
||||||
|
case f3_tree.KindOrganizations:
|
||||||
|
return newOrganizations()
|
||||||
|
// case f3_tree.KindOrganization:
|
||||||
|
// return newOrganization()
|
||||||
|
case f3_tree.KindUsers:
|
||||||
|
return newUsers()
|
||||||
|
case f3_tree.KindUser:
|
||||||
|
return newUser()
|
||||||
|
case f3_tree.KindProjects:
|
||||||
|
return newProjects()
|
||||||
|
// case f3_tree.KindProject:
|
||||||
|
// return newProject()
|
||||||
|
// case f3_tree.KindIssues:
|
||||||
|
// return newIssues()
|
||||||
|
// case f3_tree.KindIssue:
|
||||||
|
// return newIssue()
|
||||||
|
// case f3_tree.KindComments:
|
||||||
|
// return newComments()
|
||||||
|
// case f3_tree.KindComment:
|
||||||
|
// return newComment()
|
||||||
|
// case f3_tree.KindAssets:
|
||||||
|
// return newAssets()
|
||||||
|
// case f3_tree.KindAsset:
|
||||||
|
// return newAsset()
|
||||||
|
// case f3_tree.KindLabels:
|
||||||
|
// return newLabels()
|
||||||
|
// case f3_tree.KindLabel:
|
||||||
|
// return newLabel()
|
||||||
|
// case f3_tree.KindReactions:
|
||||||
|
// return newReactions()
|
||||||
|
// case f3_tree.KindReaction:
|
||||||
|
// return newReaction()
|
||||||
|
// case f3_tree.KindReviews:
|
||||||
|
// return newReviews()
|
||||||
|
// case f3_tree.KindReview:
|
||||||
|
// return newReview()
|
||||||
|
// case f3_tree.KindReviewComments:
|
||||||
|
// return newReviewComments()
|
||||||
|
// case f3_tree.KindReviewComment:
|
||||||
|
// return newReviewComment()
|
||||||
|
// case f3_tree.KindMilestones:
|
||||||
|
// return newMilestones()
|
||||||
|
// case f3_tree.KindMilestone:
|
||||||
|
// return newMilestone()
|
||||||
|
// case f3_tree.KindPullRequests:
|
||||||
|
// return newPullRequests()
|
||||||
|
// case f3_tree.KindPullRequest:
|
||||||
|
// return newPullRequest()
|
||||||
|
// case f3_tree.KindReleases:
|
||||||
|
// return newReleases()
|
||||||
|
// case f3_tree.KindRelease:
|
||||||
|
// return newRelease()
|
||||||
|
case f3_tree.KindTopics:
|
||||||
|
return newTopics()
|
||||||
|
// case f3_tree.KindRepositories:
|
||||||
|
// return newRepositories()
|
||||||
|
// case f3_tree.KindRepository:
|
||||||
|
// return newRepository(ctx)
|
||||||
case generic.KindRoot:
|
case generic.KindRoot:
|
||||||
return newRoot(o.GetTree().(f3_tree.TreeInterface).NewFormat(kind))
|
return newRoot(o.GetTree().(f3_tree.TreeInterface).NewFormat(kind))
|
||||||
default:
|
default:
|
||||||
|
|
17
services/f3/driver/user.go
Normal file
17
services/f3/driver/user.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright Earl Warren <contact@earl-warren.org>
|
||||||
|
// Copyright Loïc Dachary <loic@dachary.org>
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package driver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"lab.forgefriends.org/friendlyforgeformat/gof3/tree/generic"
|
||||||
|
)
|
||||||
|
|
||||||
|
type user struct {
|
||||||
|
common
|
||||||
|
}
|
||||||
|
|
||||||
|
func newUser() generic.NodeDriverInterface {
|
||||||
|
return &user{}
|
||||||
|
}
|
|
@ -5,6 +5,13 @@
|
||||||
package driver
|
package driver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
|
||||||
|
f3_tree "lab.forgefriends.org/friendlyforgeformat/gof3/tree/f3"
|
||||||
"lab.forgefriends.org/friendlyforgeformat/gof3/tree/generic"
|
"lab.forgefriends.org/friendlyforgeformat/gof3/tree/generic"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,6 +19,30 @@ type users struct {
|
||||||
container
|
container
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *users) ListPage(ctx context.Context, page int) generic.ChildrenSlice {
|
||||||
|
sess := db.GetEngine(ctx).In("type", user_model.UserTypeIndividual, user_model.UserTypeF3)
|
||||||
|
if page != 0 {
|
||||||
|
sess = db.SetSessionPagination(sess, &db.ListOptions{Page: page, PageSize: o.getPageSize()})
|
||||||
|
}
|
||||||
|
sess = sess.Select("`user`.*")
|
||||||
|
users := make([]*user_model.User, 0, o.getPageSize())
|
||||||
|
|
||||||
|
if err := sess.Find(&users); err != nil {
|
||||||
|
panic(fmt.Errorf("error while listing users: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return f3_tree.ConvertListed(ctx, o.GetNode(), f3_tree.ConvertToAny(users...)...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *users) GetIDFromName(ctx context.Context, name string) generic.NodeID {
|
||||||
|
user, err := user_model.GetUserByName(ctx, name)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("GetUserByName: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return generic.NodeID(fmt.Sprintf("%d", user.ID))
|
||||||
|
}
|
||||||
|
|
||||||
func newUsers() generic.NodeDriverInterface {
|
func newUsers() generic.NodeDriverInterface {
|
||||||
return &users{}
|
return &users{}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue