An embedded property graph database written in MoonBit.
moon check --target native
moon test --target native
moon build --target native
moon fmt --check
moon info --target nativemoon run examples/in_memory_graph --target nativelet database = @moonpropertydb.Database::new_in_memory()
let transaction = try! database.begin_write()
let package_a = try! transaction.create_node(["Package"], {
"name": @moonpropertydb.PropertyValue::String("app"),
})
let package_b = try! transaction.create_node(["Package"], {})
let _dependency = try! transaction.create_edge(
package_a,
package_b,
"DEPENDS_ON",
{},
)
try! transaction.commit()
let committed = try! database.get_node(package_a)
println("committed labels: \{committed.labels.length()}")
try! database.close()pub(all) suberror DatabaseError {
DatabaseDirectoryNotFound(path~ : String)
DatabaseNotInitialized(path~ : String)
DatabaseAlreadyInitialized(path~ : String)
DatabaseClosed
DatabaseRecoveryRequired
IncompatibleDatabaseFormat(version~ : UInt16)
WriterLockOccupied(path~ : String)
WriterTransactionActive
NodeNotFound(NodeId)
NodeIdExhausted
EdgeNotFound(EdgeId)
EdgeIdExhausted
EndpointNodeNotFound(NodeId)
NodeHasIncidentEdges(NodeId)
InvalidPropertyValue(property~ : String, reason~ : String)
IndexAlreadyExists(name~ : String)
IndexNotFound(name~ : String)
QueryLexicalError(position~ : SourcePosition, reason~ : String)
QuerySyntaxError(position~ : SourcePosition, reason~ : String)
QuerySemanticError(position~ : SourcePosition, reason~ : String)
IncompleteLogRecord(file~ : String, offset~ : UInt64, transaction_id~ : UInt64?)
LogChecksumFailed(file~ : String, offset~ : UInt64, transaction_id~ : UInt64?)
CorruptLogRecord(file~ : String, offset~ : UInt64, transaction_id~ : UInt64?, reason~ : String)
SnapshotChecksumFailed(file~ : String, offset~ : UInt64, transaction_id~ : UInt64?)
CorruptSnapshot(file~ : String, offset~ : UInt64, transaction_id~ : UInt64?, reason~ : String)
IoError(file~ : String, operation~ : String, reason~ : String)
TransactionFailed
TransactionCommitInProgress
TransactionAlreadyCommitted
TransactionAlreadyRolledBack
CommitOutcomeUnknown
TransactionIdExhausted
} derive(Eq, Debug)pub struct Database {
// private fields
}pub struct WriteTransaction {
// private fields
}fn WriteTransaction::add_label(self : WriteTransaction, id : NodeId, label : String) -> Unit raise DatabaseErrorfn WriteTransaction::create_edge(self : WriteTransaction, from : NodeId, to : NodeId, edge_type : String, properties : Map[String, PropertyValue]) -> EdgeId raise DatabaseErrorfn WriteTransaction::create_edge_property_index(self : WriteTransaction, edge_type : String, property : String) -> Unit raise DatabaseErrorfn WriteTransaction::create_node(self : WriteTransaction, labels : Array[String], properties : Map[String, PropertyValue]) -> NodeId raise DatabaseErrorfn WriteTransaction::create_node_property_index(self : WriteTransaction, label : String, property : String) -> Unit raise DatabaseErrorfn WriteTransaction::delete_node_cascade(self : WriteTransaction, id : NodeId) -> Unit raise DatabaseErrorfn WriteTransaction::edge_ids_by_property_index(self : WriteTransaction, edge_type : String, property : String, value : PropertyValue) -> Array[EdgeId]? raise DatabaseErrorfn WriteTransaction::edge_ids_with_type(self : WriteTransaction, edge_type : String) -> Array[EdgeId] raise DatabaseErrorfn WriteTransaction::incoming_edges(self : WriteTransaction, node_id : NodeId) -> Array[Edge] raise DatabaseErrorfn WriteTransaction::node_ids_by_property_index(self : WriteTransaction, label : String, property : String, value : PropertyValue) -> Array[NodeId]? raise DatabaseErrorfn WriteTransaction::node_ids_with_label(self : WriteTransaction, label : String) -> Array[NodeId] raise DatabaseErrorfn WriteTransaction::outgoing_edges(self : WriteTransaction, node_id : NodeId) -> Array[Edge] raise DatabaseErrorfn WriteTransaction::remove_edge_property(self : WriteTransaction, id : EdgeId, key : String) -> Unit raise DatabaseErrorfn WriteTransaction::remove_label(self : WriteTransaction, id : NodeId, label : String) -> Unit raise DatabaseErrorfn WriteTransaction::remove_node_property(self : WriteTransaction, id : NodeId, key : String) -> Unit raise DatabaseErrorfn WriteTransaction::set_edge_property(self : WriteTransaction, id : EdgeId, key : String, value : PropertyValue) -> Unit raise DatabaseErrorfn WriteTransaction::set_node_property(self : WriteTransaction, id : NodeId, key : String, value : PropertyValue) -> Unit raise DatabaseError