about summary refs log blame commit diff stats
path: root/src/catalogue.lil
blob: 01293603652010bcbaeca2aec523389503a9227d (plain) (tree)
























                                                                             




                                                                            
                           
 


                                                                                       
                                                               







                                                                          
               
 




                                                                                            
                                                     

                                                                                                                      



                                                                               
                                          



                                                                       
 

                                                                                     
# 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: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 "sis "] # 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'"
	wget_fmt_string:"wget -qO- " , d.url , " | grep -o \"<title>[^<]*\" | sed -e 's/<[^>]*>//g' | tr -d '\n'"
	t:insert title:(shell[wget_fmt_string].out) reference:(d.url) 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.url:"https://smallandnearlysilent.com"
row:table row
test:entry[row catalogue]

show[test] # NOTE, keep in mind that this generates a totally new table

# 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.