Bounded multi-resolution time-series archives in pure MoonBit
git clone https://github.com/apoloe4/moonrra.git
cd moonrra
moon check --deny-warn
moon build --deny-warn
moon test --deny-warn
moon run examples/basic
moon run examples/sensor
moon run examples/trafficimport { "apoloe4/moonrra" @rra }let db = @rra.Store::new(60, [
@rra.Spec::new(1, 1440, Last),
@rra.Spec::new(60, 720, Average, min_known=30),
])
db.update(60L, Some(20.0))
db.update(120L, Some(22.0))
let points = db.fetch(0, 0L, 120L)
let bytes = db.snapshot()
let restored = @rra.Store::restore(bytes)moon fmt --check
moon check --deny-warn --target all
moon build --deny-warn --target all
moon test --deny-warn --target all
moon infofn Spec::new(factor : Int, rows : Int, aggregation : Consolidation, min_known? : Int) -> Spec raise ArchiveErrorpub struct Store {
// private fields
}fn Store::fetch(self : Store, archive_index : Int, start : Int64, end : Int64) -> Array[Point] raise ArchiveErrorfn counter32_rate(previous : UInt, current : UInt, elapsed_seconds : Int, wrap? : Bool) -> Double? raise ArchiveErrorInstall
Download zipBounded multi-resolution time-series archives in pure MoonBit