mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-29 22:16:15 -06:00
remove count column
This commit is contained in:
parent
10945e7809
commit
56a7ce76ee
7 changed files with 143 additions and 3 deletions
1
internal/cache/size.go
vendored
1
internal/cache/size.go
vendored
|
|
@ -373,7 +373,6 @@ func sizeofDomainPermissionSubscription() uintptr {
|
|||
SuccessfullyFetchedAt: exampleTime,
|
||||
ETag: exampleID,
|
||||
Error: exampleTextSmall,
|
||||
Count: 100,
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -318,3 +318,37 @@ func (d *domainDB) DeleteDomainPermissionSubscription(
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *domainDB) CountDomainPermissionSubscriptionPerms(
|
||||
ctx context.Context,
|
||||
id string,
|
||||
) (int, error) {
|
||||
permSubscription, err := d.GetDomainPermissionSubscriptionByID(
|
||||
gtscontext.SetBarebones(ctx),
|
||||
id,
|
||||
)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
q := d.db.NewSelect()
|
||||
|
||||
if permSubscription.PermissionType == gtsmodel.DomainPermissionBlock {
|
||||
q = q.TableExpr(
|
||||
"? AS ?",
|
||||
bun.Ident("domain_blocks"),
|
||||
bun.Ident("perm"),
|
||||
)
|
||||
} else {
|
||||
q = q.TableExpr(
|
||||
"? AS ?",
|
||||
bun.Ident("domain_allows"),
|
||||
bun.Ident("perm"),
|
||||
)
|
||||
}
|
||||
|
||||
return q.
|
||||
Column("perm.id").
|
||||
Where("? = ?", bun.Ident("perm.subscription_id"), id).
|
||||
Count(ctx)
|
||||
}
|
||||
|
|
|
|||
99
internal/db/bundb/domainpermissionsubscription_test.go
Normal file
99
internal/db/bundb/domainpermissionsubscription_test.go
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
// GoToSocial
|
||||
// Copyright (C) GoToSocial Authors admin@gotosocial.org
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package bundb_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
)
|
||||
|
||||
type DomainPermissionSubscriptionTestSuite struct {
|
||||
BunDBStandardTestSuite
|
||||
}
|
||||
|
||||
func (suite *DomainPermissionSubscriptionTestSuite) TestCount() {
|
||||
var (
|
||||
ctx = context.Background()
|
||||
testAccount = suite.testAccounts["admin_account"]
|
||||
permSub = >smodel.DomainPermissionSubscription{
|
||||
ID: "01JGV3VZ72K58BYW8H5GEVBZGN",
|
||||
PermissionType: gtsmodel.DomainPermissionBlock,
|
||||
CreatedByAccountID: testAccount.ID,
|
||||
CreatedByAccount: testAccount,
|
||||
URI: "https://example.org/whatever.csv",
|
||||
ContentType: gtsmodel.DomainPermSubContentTypeCSV,
|
||||
}
|
||||
perms = []*gtsmodel.DomainBlock{
|
||||
{
|
||||
ID: "01JGV42G72YCKN06AC51RZPFES",
|
||||
Domain: "whatever.com",
|
||||
CreatedByAccountID: testAccount.ID,
|
||||
CreatedByAccount: testAccount,
|
||||
SubscriptionID: permSub.ID,
|
||||
},
|
||||
{
|
||||
ID: "01JGV43ZQKYPHM2M0YBQDFDSD1",
|
||||
Domain: "aaaa.example.org",
|
||||
CreatedByAccountID: testAccount.ID,
|
||||
CreatedByAccount: testAccount,
|
||||
SubscriptionID: permSub.ID,
|
||||
},
|
||||
{
|
||||
ID: "01JGV444KDDC4WFG6MZQVM0N2Z",
|
||||
Domain: "bbbb.example.org",
|
||||
CreatedByAccountID: testAccount.ID,
|
||||
CreatedByAccount: testAccount,
|
||||
SubscriptionID: permSub.ID,
|
||||
},
|
||||
{
|
||||
ID: "01JGV44AFEMBWS6P6S72BQK376",
|
||||
Domain: "cccc.example.org",
|
||||
CreatedByAccountID: testAccount.ID,
|
||||
CreatedByAccount: testAccount,
|
||||
SubscriptionID: permSub.ID,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
// Whack the perm sub in the DB.
|
||||
if err := suite.state.DB.PutDomainPermissionSubscription(ctx, permSub); err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
|
||||
// Whack the perms in the db.
|
||||
for _, perm := range perms {
|
||||
if err := suite.state.DB.CreateDomainBlock(ctx, perm); err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// Count 'em.
|
||||
count, err := suite.state.DB.CountDomainPermissionSubscriptionPerms(ctx, permSub.ID)
|
||||
if err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
|
||||
suite.Equal(4, count)
|
||||
}
|
||||
|
||||
func TestDomainPermissionSubscriptionTestSuite(t *testing.T) {
|
||||
suite.Run(t, new(DomainPermissionSubscriptionTestSuite))
|
||||
}
|
||||
|
|
@ -35,5 +35,4 @@ type DomainPermissionSubscription struct {
|
|||
SuccessfullyFetchedAt time.Time `bun:"type:timestamptz,nullzero"`
|
||||
ETag string `bun:"etag,nullzero"`
|
||||
Error string `bun:",nullzero"`
|
||||
Count uint64 `bun:""`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,4 +168,8 @@ type Domain interface {
|
|||
|
||||
// DeleteDomainPermissionSubscription deletes one DomainPermissionSubscription with the given id.
|
||||
DeleteDomainPermissionSubscription(ctx context.Context, id string) error
|
||||
|
||||
// CountDomainPermissionSubscriptionPerms counts the number of permissions
|
||||
// currently managed by the domain permission subscription of the given ID.
|
||||
CountDomainPermissionSubscriptionPerms(ctx context.Context, id string) (int, error)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ type DomainPermissionSubscription struct {
|
|||
SuccessfullyFetchedAt time.Time `bun:"type:timestamptz,nullzero"` // Time when the domain permission list was last *successfuly* fetched, to be transmitted as If-Modified-Since header.
|
||||
ETag string `bun:"etag,nullzero"` // Etag last received from the server (if any) on successful fetch.
|
||||
Error string `bun:",nullzero"` // If latest fetch attempt errored, this field stores the error message. Cleared on latest successful fetch.
|
||||
Count uint64 `bun:""` // Count of domain permission entries discovered at URI.
|
||||
}
|
||||
|
||||
type DomainPermSubContentType enumType
|
||||
|
|
|
|||
|
|
@ -2160,6 +2160,11 @@ func (c *Converter) DomainPermSubToAPIDomainPermSub(
|
|||
successfullyFetchedAt = util.FormatISO8601(d.SuccessfullyFetchedAt)
|
||||
}
|
||||
|
||||
count, err := c.state.DB.CountDomainPermissionSubscriptionPerms(ctx, d.ID)
|
||||
if err != nil {
|
||||
return nil, gtserror.Newf("error counting perm sub perms: %w", err)
|
||||
}
|
||||
|
||||
return &apimodel.DomainPermissionSubscription{
|
||||
ID: d.ID,
|
||||
Priority: d.Priority,
|
||||
|
|
@ -2176,6 +2181,7 @@ func (c *Converter) DomainPermSubToAPIDomainPermSub(
|
|||
FetchedAt: fetchedAt,
|
||||
SuccessfullyFetchedAt: successfullyFetchedAt,
|
||||
Error: d.Error,
|
||||
Count: uint64(count),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue