Skip to content
This repository has been archived by the owner on Aug 16, 2022. It is now read-only.

Commit

Permalink
feat: add totalCount field to DatasetSchema type of GraphQL schema (#154
Browse files Browse the repository at this point in the history
)

* feat: impl totalCount resolver to count dataset

* chore: run `go generate`

* Update internal/infrastructure/memory/dataset.go

Co-authored-by: rot1024 <aayhrot@gmail.com>

* Update internal/infrastructure/mongo/dataset.go

Co-authored-by: rot1024 <aayhrot@gmail.com>

Co-authored-by: rot1024 <aayhrot@gmail.com>
  • Loading branch information
keiya01 and rot1024 committed Jun 3, 2022
1 parent e444e4e commit ab6334a
Show file tree
Hide file tree
Showing 11 changed files with 164 additions and 0 deletions.
4 changes: 4 additions & 0 deletions gqlgen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@ models:
model: github.com/reearth/reearth-backend/internal/adapter/gql/gqlmodel.Lang
ID:
model: github.com/reearth/reearth-backend/internal/adapter/gql/gqlmodel.ID
DatasetSchema:
fields:
totalCount:
resolver: true
109 changes: 109 additions & 0 deletions internal/adapter/gql/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions internal/adapter/gql/gqlmodel/models_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions internal/adapter/gql/loader_dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,20 @@ func (c *DatasetLoader) FindBySchema(ctx context.Context, dsid gqlmodel.ID, firs
return conn, nil
}

func (c *DatasetLoader) CountBySchema(ctx context.Context, dsid gqlmodel.ID) (int, error) {
id, err := gqlmodel.ToID[id.DatasetSchema](dsid)
if err != nil {
return 0, err
}

cnt, err := c.usecase.CountBySchema(ctx, id)
if err != nil {
return 0, err
}

return cnt, nil
}

// data loader

type DatasetDataLoader interface {
Expand Down
4 changes: 4 additions & 0 deletions internal/adapter/gql/resolver_dataset_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ func (r *datasetSchemaResolver) Datasets(ctx context.Context, obj *gqlmodel.Data
return loaders(ctx).Dataset.FindBySchema(ctx, obj.ID, first, last, before, after)
}

func (r *datasetSchemaResolver) TotalCount(ctx context.Context, obj *gqlmodel.DatasetSchema) (int, error) {
return loaders(ctx).Dataset.CountBySchema(ctx, obj.ID)
}

type datasetSchemaFieldResolver struct{ *Resolver }

func (r *datasetSchemaFieldResolver) Schema(ctx context.Context, obj *gqlmodel.DatasetSchemaField) (*gqlmodel.DatasetSchema, error) {
Expand Down
15 changes: 15 additions & 0 deletions internal/infrastructure/memory/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@ func (r *Dataset) FindBySchema(ctx context.Context, id id.DatasetSchemaID, p *us
), nil
}

func (r *Dataset) CountBySchema(ctx context.Context, id id.DatasetSchemaID) (int, error) {
r.lock.Lock()
defer r.lock.Unlock()

n := 0
for _, dataset := range r.data {
if dataset.Schema() == id {
if r.f.CanRead(dataset.Scene()) {
n++
}
}
}
return n, nil
}

func (r *Dataset) FindBySchemaAll(ctx context.Context, id id.DatasetSchemaID) (dataset.List, error) {
r.lock.Lock()
defer r.lock.Unlock()
Expand Down
10 changes: 10 additions & 0 deletions internal/infrastructure/mongo/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,16 @@ func (r *datasetRepo) FindBySchema(ctx context.Context, schemaID id.DatasetSchem
}, pagination)
}

func (r *datasetRepo) CountBySchema(ctx context.Context, id id.DatasetSchemaID) (int, error) {
res, err := r.client.Count(ctx, r.readFilter(bson.M{
"schema": id.String(),
}))
if err != nil {
return 0, err
}
return int(res), nil
}

func (r *datasetRepo) FindBySchemaAll(ctx context.Context, schemaID id.DatasetSchemaID) (dataset.List, error) {
return r.find(ctx, nil, bson.M{
"schema": schemaID.String(),
Expand Down
4 changes: 4 additions & 0 deletions internal/usecase/interactor/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,10 @@ func (i *Dataset) FindBySchema(ctx context.Context, ds id.DatasetSchemaID, p *us
return i.datasetRepo.FindBySchema(ctx, ds, p)
}

func (i *Dataset) CountBySchema(ctx context.Context, id id.DatasetSchemaID) (int, error) {
return i.datasetRepo.CountBySchema(ctx, id)
}

func (i *Dataset) FindSchemaByScene(ctx context.Context, sid id.SceneID, p *usecase.Pagination, operator *usecase.Operator) (dataset.SchemaList, *usecase.PageInfo, error) {
if err := i.CanReadScene(sid, operator); err != nil {
return nil, nil, err
Expand Down
1 change: 1 addition & 0 deletions internal/usecase/interfaces/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ type Dataset interface {
AddDynamicDatasetSchema(context.Context, AddDynamicDatasetSchemaParam) (*dataset.Schema, error)
AddDynamicDataset(context.Context, AddDynamicDatasetParam) (*dataset.Schema, *dataset.Dataset, error)
FindBySchema(context.Context, id.DatasetSchemaID, *usecase.Pagination, *usecase.Operator) (dataset.List, *usecase.PageInfo, error)
CountBySchema(context.Context, id.DatasetSchemaID) (int, error)
FindSchemaByScene(context.Context, id.SceneID, *usecase.Pagination, *usecase.Operator) (dataset.SchemaList, *usecase.PageInfo, error)
FindDynamicSchemaByScene(context.Context, id.SceneID) (dataset.SchemaList, error)
RemoveDatasetSchema(context.Context, RemoveDatasetSchemaParam, *usecase.Operator) (id.DatasetSchemaID, error)
Expand Down
1 change: 1 addition & 0 deletions internal/usecase/repo/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type Dataset interface {
FindByID(context.Context, id.DatasetID) (*dataset.Dataset, error)
FindByIDs(context.Context, id.DatasetIDList) (dataset.List, error)
FindBySchema(context.Context, id.DatasetSchemaID, *usecase.Pagination) (dataset.List, *usecase.PageInfo, error)
CountBySchema(context.Context, id.DatasetSchemaID) (int, error)
FindBySchemaAll(context.Context, id.DatasetSchemaID) (dataset.List, error)
FindGraph(context.Context, id.DatasetID, id.DatasetFieldIDList) (dataset.List, error)
Save(context.Context, *dataset.Dataset) error
Expand Down
1 change: 1 addition & 0 deletions schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,7 @@ type DatasetSchema implements Node {
name: String!
sceneId: ID!
fields: [DatasetSchemaField!]!
totalCount: Int!
representativeFieldId: ID
dynamic: Boolean
datasets(
Expand Down

0 comments on commit ab6334a

Please sign in to comment.