generated from alecodes/base-template
feat: add platform-collection relationship in platform.FetchCollection()
This commit is contained in:
parent
8af94161ab
commit
c1684c8dea
7 changed files with 184 additions and 79 deletions
|
|
@ -2,23 +2,6 @@ package synchronizator
|
|||
|
||||
import "slices"
|
||||
|
||||
type PlatformClass interface {
|
||||
// How to transform the struct into a node. It needs to return the class,
|
||||
// name and a []byte representation of the metadata.
|
||||
//
|
||||
// - name: A user friendly name
|
||||
// - metadata: Arbitrary data. This will be stored as a jsonb in the database
|
||||
//
|
||||
ToNode() (string, []byte, error)
|
||||
|
||||
// How to transform a node into the struct. This method should modify the
|
||||
// struct directly as it receives a pointer.
|
||||
//
|
||||
// - name: A user friendly name
|
||||
// - metadata: Arbitrary data. This is stored as a jsonb in the database
|
||||
FromNode(string, []byte) error
|
||||
}
|
||||
|
||||
// Utility struct to represent a collection of nodes, it's a [Node] itself so all
|
||||
// the node's functionality is available.
|
||||
type Platform struct {
|
||||
|
|
@ -26,22 +9,6 @@ type Platform struct {
|
|||
Collections []*Collection // Child nodes
|
||||
}
|
||||
|
||||
type Fetcher = func(pagination Pagination) ([]*Collection, Pagination, error)
|
||||
|
||||
type Pagination struct {
|
||||
Total int
|
||||
HasMore bool
|
||||
Limit int
|
||||
Offset int
|
||||
}
|
||||
|
||||
var StartPagination = Pagination{
|
||||
Total: 0,
|
||||
HasMore: false,
|
||||
Limit: 10,
|
||||
Offset: 0,
|
||||
}
|
||||
|
||||
func (platform *Platform) FetchCollections(fetcher Fetcher, start_pagination Pagination) error {
|
||||
collections, pagination, err := fetcher(start_pagination)
|
||||
if err != nil {
|
||||
|
|
@ -54,6 +21,26 @@ func (platform *Platform) FetchCollections(fetcher Fetcher, start_pagination Pag
|
|||
}
|
||||
|
||||
err = BulkCreateNode(platform._conn, platform.Collections)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, item := range platform.Collections {
|
||||
err := platform.AddRelationship(
|
||||
&Relationship{
|
||||
_class: "PLATFORM_HAS_COLLECTION",
|
||||
From: platform.Id,
|
||||
To: item.Id,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = BulkCreateRelationships(platform._conn, platform._relationships)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue