mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2026-01-06 03:03:16 -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,
|
SuccessfullyFetchedAt: exampleTime,
|
||||||
ETag: exampleID,
|
ETag: exampleID,
|
||||||
Error: exampleTextSmall,
|
Error: exampleTextSmall,
|
||||||
Count: 100,
|
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -318,3 +318,37 @@ func (d *domainDB) DeleteDomainPermissionSubscription(
|
||||||
|
|
||||||
return nil
|
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"`
|
SuccessfullyFetchedAt time.Time `bun:"type:timestamptz,nullzero"`
|
||||||
ETag string `bun:"etag,nullzero"`
|
ETag string `bun:"etag,nullzero"`
|
||||||
Error string `bun:",nullzero"`
|
Error string `bun:",nullzero"`
|
||||||
Count uint64 `bun:""`
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -168,4 +168,8 @@ type Domain interface {
|
||||||
|
|
||||||
// DeleteDomainPermissionSubscription deletes one DomainPermissionSubscription with the given id.
|
// DeleteDomainPermissionSubscription deletes one DomainPermissionSubscription with the given id.
|
||||||
DeleteDomainPermissionSubscription(ctx context.Context, id string) error
|
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.
|
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.
|
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.
|
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
|
type DomainPermSubContentType enumType
|
||||||
|
|
|
||||||
|
|
@ -2160,6 +2160,11 @@ func (c *Converter) DomainPermSubToAPIDomainPermSub(
|
||||||
successfullyFetchedAt = util.FormatISO8601(d.SuccessfullyFetchedAt)
|
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{
|
return &apimodel.DomainPermissionSubscription{
|
||||||
ID: d.ID,
|
ID: d.ID,
|
||||||
Priority: d.Priority,
|
Priority: d.Priority,
|
||||||
|
|
@ -2176,6 +2181,7 @@ func (c *Converter) DomainPermSubToAPIDomainPermSub(
|
||||||
FetchedAt: fetchedAt,
|
FetchedAt: fetchedAt,
|
||||||
SuccessfullyFetchedAt: successfullyFetchedAt,
|
SuccessfullyFetchedAt: successfullyFetchedAt,
|
||||||
Error: d.Error,
|
Error: d.Error,
|
||||||
|
Count: uint64(count),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue