forked from mirrors/gotosocial
[feature] Add local user and post count to nodeinfo responses (#1325)
* Add local user and post count to nodeinfo responses This fixes #1307 (at least partially). The nodeinfo endpoint should now return the total users on an instance, along with their post count. * Update NodeInfoUsers docstring and swagger yaml file
This commit is contained in:
parent
d6487933c7
commit
3512325e46
3 changed files with 31 additions and 5 deletions
|
@ -100,13 +100,22 @@ definitions:
|
|||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
NodeInfoUsage:
|
||||
properties:
|
||||
localPosts:
|
||||
format: int64
|
||||
type: integer
|
||||
x-go-name: LocalPosts
|
||||
users:
|
||||
$ref: '#/definitions/NodeInfoUsers'
|
||||
title: NodeInfoUsage represents usage information about this server, such as number of users.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
NodeInfoUsers:
|
||||
title: NodeInfoUsers is a stub for usage information, currently empty.
|
||||
properties:
|
||||
total:
|
||||
format: int64
|
||||
type: integer
|
||||
x-go-name: Total
|
||||
title: NodeInfoUsers represents aggregate information about the users on the server.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
Source:
|
||||
|
|
|
@ -80,7 +80,10 @@ type NodeInfoServices struct {
|
|||
// NodeInfoUsage represents usage information about this server, such as number of users.
|
||||
type NodeInfoUsage struct {
|
||||
Users NodeInfoUsers `json:"users"`
|
||||
LocalPosts int `json:"localPosts"`
|
||||
}
|
||||
|
||||
// NodeInfoUsers is a stub for usage information, currently empty.
|
||||
type NodeInfoUsers struct{}
|
||||
// NodeInfoUsers represents aggregate information about the users on the server.
|
||||
type NodeInfoUsers struct {
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
|
|
@ -55,6 +55,17 @@ func (p *processor) GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserr
|
|||
openRegistration := config.GetAccountsRegistrationOpen()
|
||||
softwareVersion := config.GetSoftwareVersion()
|
||||
|
||||
host := config.GetHost()
|
||||
userCount, err := p.db.CountInstanceUsers(ctx, host)
|
||||
if err != nil {
|
||||
return nil, gtserror.NewErrorInternalError(err, "Unable to query instance user count")
|
||||
}
|
||||
|
||||
postCount, err := p.db.CountInstanceStatuses(ctx, host)
|
||||
if err != nil {
|
||||
return nil, gtserror.NewErrorInternalError(err, "Unable to query instance status count")
|
||||
}
|
||||
|
||||
return &apimodel.Nodeinfo{
|
||||
Version: nodeInfoVersion,
|
||||
Software: apimodel.NodeInfoSoftware{
|
||||
|
@ -68,7 +79,10 @@ func (p *processor) GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserr
|
|||
},
|
||||
OpenRegistrations: openRegistration,
|
||||
Usage: apimodel.NodeInfoUsage{
|
||||
Users: apimodel.NodeInfoUsers{},
|
||||
Users: apimodel.NodeInfoUsers{
|
||||
Total: userCount,
|
||||
},
|
||||
LocalPosts: postCount,
|
||||
},
|
||||
Metadata: make(map[string]interface{}),
|
||||
}, nil
|
||||
|
|
Loading…
Reference in a new issue