Skip to content

themoritz/datalog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Todo

  • And/or queries
  • Indices
  • Persistence
  • Rules
  • Pull API (and convert into Rust types)
    • Pull Query Macro
  • Cache queries
  • Schema
    • Component attributes
  • Enforce types
  • Attributes are entities under the hood
  • Custom rust predicates
  • Aggregation functions
  • Enforce cardinality
  • Transactions
  • Transaction timestamps
  • Introspection (builtins)

add!(14, { "person/name": "Moritz", "person/age": 39, "person/friend": { "person/name": "Piet", "person/age": 3 } }) .and(retract!(14))

add!(14, "person/name": ["Moritz"]);

Compiles to

  • 14, person/name = Moritz
  • 14, person/age = 39
  • 14, person/friend = 15 (new)
  • 15, person/name = Piet
  • 15, person/age = 3

retract!(14, "person/name"), retract!(14, "person/friend": Ref(15)) retract!(14, "person/aliases": ["Troll", "Papa"])

Compiles to

  • 14, person/name = Moritz
  • 14, person/friend = 15 (multiple if one-to-many attribute)
  • 14, person/aliases = "Troll"
  • 14, person/aliases = "Papa"

About

Datalog experiments in Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages