removed unneeded 'recursive get'
This commit is contained in:
parent
b6bba8fcd1
commit
62a76e9d92
@ -9,9 +9,7 @@ import json_serde
|
||||
import query
|
||||
import simplifile
|
||||
import tree
|
||||
import tree_events.{
|
||||
type TreeEvents, GetEvent, RecursiveGetEvent, SetEvent, Shutdown, Snapshot,
|
||||
}
|
||||
import tree_events.{type TreeEvents, GetEvent, SetEvent, Shutdown, Snapshot}
|
||||
|
||||
pub type Message {
|
||||
Message
|
||||
@ -78,15 +76,7 @@ pub fn load(snapshots_path, names) {
|
||||
fn handle_message(event: TreeEvents, tree) {
|
||||
case event {
|
||||
GetEvent(path, client) -> {
|
||||
let res = query.get(tree, path, False)
|
||||
actor.send(
|
||||
client,
|
||||
res |> result.map(fn(tree) { tree |> json_serde.serialize }),
|
||||
)
|
||||
actor.continue(tree)
|
||||
}
|
||||
RecursiveGetEvent(path, client) -> {
|
||||
let res = query.get(tree, path, False)
|
||||
let res = query.get(tree, path)
|
||||
actor.send(
|
||||
client,
|
||||
res |> result.map(fn(tree) { tree |> json_serde.serialize }),
|
||||
|
||||
@ -10,7 +10,7 @@ import tree_events
|
||||
///
|
||||
/// Query formats:
|
||||
///
|
||||
/// - get | rget (path)
|
||||
/// - get (path)
|
||||
/// - set (path) (data)
|
||||
pub fn parse(query: String) {
|
||||
let args = query |> string.split(" ")
|
||||
@ -23,14 +23,6 @@ pub fn parse(query: String) {
|
||||
|> Ok
|
||||
}
|
||||
}
|
||||
["rget", path] -> {
|
||||
case path |> parse_path {
|
||||
Error(_) -> Error(QueryError("Wrong query format."))
|
||||
Ok(#(head, tail)) ->
|
||||
#(head, fn(actor) { tree_events.RecursiveGetEvent(tail, actor) })
|
||||
|> Ok
|
||||
}
|
||||
}
|
||||
["set", path, data] -> {
|
||||
case path |> parse_path {
|
||||
Error(_) -> Error(QueryError("Wrong query format."))
|
||||
@ -50,11 +42,8 @@ pub fn parse(query: String) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(tree, path, recursive) -> Result(tree.Tree, QueryError) {
|
||||
let res = case recursive {
|
||||
False -> tree.get(tree, path)
|
||||
_ -> tree.rget(tree, path)
|
||||
}
|
||||
pub fn get(tree, path) -> Result(tree.Tree, QueryError) {
|
||||
let res = tree.get(tree, path)
|
||||
case res {
|
||||
Error(_) -> Error(QueryError("There is no such node."))
|
||||
Ok(tree) -> Ok(tree)
|
||||
|
||||
@ -18,10 +18,6 @@ pub fn new() {
|
||||
Root(dict.new())
|
||||
}
|
||||
|
||||
/// Traverses the tree along the given path.
|
||||
///
|
||||
/// If the last found node is a Leaf, returns it.
|
||||
/// Else returns Nil
|
||||
pub fn get(tree, path) {
|
||||
let res = get_step(tree, path)
|
||||
case res {
|
||||
@ -30,15 +26,6 @@ pub fn get(tree, path) {
|
||||
}
|
||||
}
|
||||
|
||||
/// Recursive Get: returns whole requsted subtree
|
||||
pub fn rget(tree, path) {
|
||||
let res = get_step(tree, path)
|
||||
case res {
|
||||
Error(_) -> Error(Nil)
|
||||
Ok(_) as res -> res
|
||||
}
|
||||
}
|
||||
|
||||
fn get_step(tree: Tree, path: List(String)) -> Result(Tree, Nil) {
|
||||
case tree, path {
|
||||
Root(_) as rt, [] -> Ok(rt)
|
||||
|
||||
@ -5,11 +5,6 @@ import tree
|
||||
pub type TreeEvents {
|
||||
GetEvent(path: List(String), reply_with: Subject(Result(String, QueryError)))
|
||||
|
||||
RecursiveGetEvent(
|
||||
path: List(String),
|
||||
reply_with: Subject(Result(String, QueryError)),
|
||||
)
|
||||
|
||||
SetEvent(
|
||||
path: List(String),
|
||||
data: tree.LeafData,
|
||||
|
||||
@ -105,7 +105,6 @@ fn read_next(forest) {
|
||||
"help" |> io.println
|
||||
"exit" |> io.println
|
||||
"get <path>" |> io.println
|
||||
"rget <path>" |> io.println
|
||||
"set <path> <data>" |> io.println
|
||||
"trees" |> io.println
|
||||
|
||||
|
||||
@ -50,8 +50,7 @@ fn get_100k(tree, i) {
|
||||
100_000 -> Nil
|
||||
_ -> {
|
||||
let rint = int.random(1_000_000)
|
||||
let assert Ok(_) =
|
||||
tree |> query.get([".", rint |> int.to_string()], False)
|
||||
let assert Ok(_) = tree |> query.get([".", rint |> int.to_string()])
|
||||
get_100k(tree, i + 1)
|
||||
}
|
||||
}
|
||||
@ -98,7 +97,7 @@ fn setup_nodes_tasks(tree, paths) {
|
||||
fn get_nodes(tree, paths) {
|
||||
paths
|
||||
|> list.fold(tree, fn(tree, path) {
|
||||
let _ = tree |> query.get(path, True)
|
||||
let _ = tree |> query.get(path)
|
||||
tree
|
||||
})
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ pub fn server_test() {
|
||||
|
||||
let assert Ok(Nil) = mug.send(socket, <<"set root.b \"foo\"":utf8>>)
|
||||
let assert Ok(_) = mug.receive(socket, timeout_milliseconds: 100)
|
||||
let assert Ok(Nil) = mug.send(socket, <<"rget root":utf8>>)
|
||||
let assert Ok(Nil) = mug.send(socket, <<"get root":utf8>>)
|
||||
let assert Ok(packet) = mug.receive(socket, timeout_milliseconds: 100)
|
||||
|
||||
packet |> should.equal(<<"{\"a\":2,\"b\":\"foo\"}":utf8>>)
|
||||
|
||||
@ -24,15 +24,15 @@ pub fn kv_test() {
|
||||
let assert Ok(tree) = query.set(tree, ["d"], tree.Bool(False))
|
||||
let assert Ok(tree) = query.set(tree, ["e"], tree.Null)
|
||||
|
||||
query.get(tree, ["a"], False)
|
||||
query.get(tree, ["a"])
|
||||
|> should.equal(tree.Leaf(tree.String("foo")) |> Ok())
|
||||
query.get(tree, ["b"], False)
|
||||
query.get(tree, ["b"])
|
||||
|> should.equal(tree.Leaf(tree.Int(42)) |> Ok())
|
||||
query.get(tree, ["c"], False)
|
||||
query.get(tree, ["c"])
|
||||
|> should.equal(tree.Leaf(tree.Float(12.34)) |> Ok())
|
||||
query.get(tree, ["d"], False)
|
||||
query.get(tree, ["d"])
|
||||
|> should.equal(tree.Leaf(tree.Bool(False)) |> Ok())
|
||||
query.get(tree, ["e"], False)
|
||||
query.get(tree, ["e"])
|
||||
|> should.equal(tree.Leaf(tree.Null) |> Ok())
|
||||
}
|
||||
|
||||
@ -45,15 +45,15 @@ pub fn tree_test() {
|
||||
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(42))
|
||||
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(43))
|
||||
|
||||
query.get(tree, ["a", "b"], False)
|
||||
query.get(tree, ["a", "b"])
|
||||
|> should.equal(tree.Leaf(tree.String("new foo")) |> Ok())
|
||||
|
||||
query.get(tree, ["a", "b2"], True)
|
||||
query.get(tree, ["a", "b2"])
|
||||
|> should.equal(
|
||||
tree.Node(dict.new() |> dict.insert("c", tree.Leaf(tree.String("bar"))))
|
||||
|> Ok(),
|
||||
)
|
||||
query.get(tree, ["a2", "b3"], False)
|
||||
query.get(tree, ["a2", "b3"])
|
||||
|> should.equal(tree.Leaf(tree.Int(43)) |> Ok())
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user