# spent a good bit of time playing with lil and reviewing the docs. I am now # totally smitten and excited to use lil. # a basic sketch of the data table at the center of the action # catalogue.entry_type # catalogue.parent # not 100% certain how to reference another entry by id # catalogue.title # catalogue.body # catalogue.reference # catalogue.created_date # catalogue.updated_date # does this matter? (sorta leaning towards "no") # entry_type's # - link # - note # - folder # every item can have 1 parent # a parent is usually a folder # data table wrapped in an interactive cli for adding, querying, and viewing # input data. Input data stored as CSV between sessions # NOTE: if input data is stored as CSV is becomes trivial to pipe in and out # of SQLite in the future...if that'd be desirable # NOTE: I'm using just 1 table so that this can be easily exported as CSV... # if it weren't for that requirement, I'd have multiple tables catalogue.entry_type:"folder","folder","note","link","link" catalogue.parent:0,0,0,0,0 # QUESTION: how to reference other entries by IDs catalogue.title:"read","to read","what an idea","Oatmeal","sans" catalogue.body:0,0,"what if I made a lil cli",0,0 catalogue.reference:0,0,0,"https://eli.li","https://smallandnearlysilent.com" catalogue.created_date:"2022-12-07","2022-12-07","2022-12-07","2022-12-07","2022-12-07" catalogue:table catalogue # alternate syntax to make a table, # t: insert food:("Eggs","Pancakes","Grapefruit") quantity:(3,4,1) tasty:(1,1,0) into 0 # validate that I can write a table to disk and read it back in show[catalogue] out:writecsv[catalogue] show[out] write["test.csv" out] data:read["test.csv"] newtable:readcsv[data "sissss"] # this column spec. syntax looks hilarious show[newtable] # HUGE SUCCESS! # Not sure how to programmatically access/view the implicit ID column...or if that is wise? # in lieu of using the implicit IDs when referencing a row, I think maybe I'll come up with # my own ID and use that instead...a well known ID? on entry d t do date_fmt_string:"date +%Y-%m-%d | tr -d '\n'" t:insert entry_type:(d.entry_type) title:(d.title) created_date:(shell[date_fmt_string].out) into t end # where d is a table representing a new row to be added to t, an existing table row.entry_type:"note" row.title:"in which we test adding a row with a function" row:table row test:entry[row catalogue] show[test] # NOTE, keep in mind that this generates a totally new table do search q t do t:select name where ("Alice" = name) from people end # HOLD UP! I've over complicated things; I'm going to shift gears, make this projects # only focused on link logging, not a general purpose DB.