feat: add simple reconsiliation capabilities

This commit is contained in:
Alexander Navarro 2024-12-02 15:13:44 -03:00
parent 5d00b7c336
commit 28fa3ed3cc
5 changed files with 451 additions and 8 deletions

View file

@ -195,7 +195,7 @@ func (conn *DB) NewPlatform(name string, metadata []byte, originalData []byte) (
Collections: []*Collection{collection},
}
_, err = conn.addRelationwithTx(tx, platform.Id, &collection_has_node{}, collection.Id)
_, err = conn.addRelationwithTx(tx, platform.Id, &platform_has_collection{}, collection.Id)
if err != nil {
return err
}
@ -340,6 +340,60 @@ func (conn *DB) GetNode(id int64) (*Node, error) {
return &node, nil
}
func (conn *DB) GetPlatform(id int64) (*Platform, error) {
node := Node{
Id: id,
_conn: conn,
}
sql := "SELECT _class, name, metadata, original_data FROM nodes WHERE id = $1 AND _class = 'PLATFORM';"
conn.log(DEBUG, sql)
err := conn.Connection.QueryRow(sql, id).
Scan(&node._class, &node.name, &node.metadata, &node.originalData)
if err != nil {
conn.log(DEBUG, err)
return nil, fmt.Errorf("No row matching id = %v", id)
}
platform := &Platform{
Node: node,
}
err = platform.loadCollections()
if err != nil {
return nil, err
}
return platform, nil
}
func (conn *DB) GetCollection(id int64) (*Collection, error) {
node := Node{
Id: id,
_conn: conn,
}
sql := "SELECT _class, name, metadata, original_data FROM nodes WHERE id = $1 AND _class = 'COLLECTION';"
conn.log(DEBUG, sql)
err := conn.Connection.QueryRow(sql, id).
Scan(&node._class, &node.name, &node.metadata, &node.originalData)
if err != nil {
conn.log(DEBUG, err)
return nil, fmt.Errorf("No row matching id = %v", id)
}
collection := &Collection{
Node: node,
}
err = collection.loadNodes()
if err != nil {
return nil, err
}
return collection, nil
}
// Deletes a node with the provided id
func (conn *DB) DeleteNode(id int64) error {
tx, err := conn.Connection.Begin()