fsdb v0.2.4 Fsdb

API module.

  #run with: mix sample

  {:ok, db} = Fsdb.start_link(Path.expand("_build/dev/.fsdb"))

  #drop to start over
  :ok = Fsdb.drop(db, "table1")

  #creates table at dev default _build/dev/.fsdb
  #configure path with: config :fsdb, path: <NEW_PATH>
  :ok = Fsdb.create(db, "table1")

  #insert generates and returns an autoincrementing id
  {:ok, 1} = Fsdb.insert(db, "table1", "row1")
  {:ok, "row1"} = Fsdb.fetch(db, "table1", 1)

  #operation on unexisting ids return not found
  :nf = Fsdb.delete(db, "table1", 5)
  :nf = Fsdb.update(db, "table1", 5, "row5+")

  #save overrides and updates id generator
  :ok = Fsdb.save(db, "table1", 5, "row5")
  :ok = Fsdb.save(db, "table1", 3, "row3")
  #continue +1 of largest id used/generated before
  {:ok, 6} = Fsdb.insert(db, "table1", "row6")

  #operations that get back previous value
  {:ok, "row5"} = Fsdb.update(db, "table1", 5, "row5+")
  {:ok, "row5+"} = Fsdb.save(db, "table1", 5, "row5++")
  {:ok, "row5++"} = Fsdb.delete(db, "table1", 5)

  #tuples may not be id ordered
  [{1, "row1"}, {3, "row3"}, {6, "row6"}] = Fsdb.list(db, "table1")

Summary

Functions

Creates a table with name table

Deletes the row in table table having the id id

Drops the table named table

Fetches the row in table table having the id id

Inserts row row in table table with auto generated id

Returns all rows in table table

Inserts or updates row row in table table with specific id id. If the provided id is greater than the last autogenerated id then the autogenerated id is updated to the provided one

Starts the GenServer

Stops the server

Updates the row in table table having the id id

Functions

create(pid, table)

Creates a table with name table.

Returns :ok.

delete(pid, table, id)

Deletes the row in table table having the id id.

Returns {:ok, previous_row} | :nf.

drop(pid, table)

Drops the table named table.

Returns :ok.

fetch(pid, table, id)

Fetches the row in table table having the id id.

Returns {:ok, row} | :nf.

insert(pid, table, row)

Inserts row row in table table with auto generated id.

Returns {:ok, id}.

list(pid, table)

Returns all rows in table table.

Returns [{id, row}, ...].

save(pid, table, id, row)

Inserts or updates row row in table table with specific id id. If the provided id is greater than the last autogenerated id then the autogenerated id is updated to the provided one.

Returns :ok | {:ok, previous_row}.

start_link(state, opts \\ [])

Starts the GenServer.

state must contain a valid path in the :path key.

opts is optional and is passed verbatim to GenServer.

Returns {:ok, pid}.

Example

  Fsdb.Server.start_link([path: ".fsdb"], [name: Fsdb.Server])
stop(pid)

Stops the server.

Returns :ok.

update(pid, table, id, row)

Updates the row in table table having the id id.

Returns {:ok, previous_row} | :nf.