ufko.org Simple SQLite3 RAM server toy:
Client: Any program/function able to send a string into TCP socket
$: echo "create table t1 (name, age)" | nc localhost 7306
$: echo "insert into t1 values ('jack', 30)" | nc localhost 7306
$: echo "select * from t1" | nc localhost 7306
jack 30
$: echo ".dump" | nc localhost 7306
Dumped
$: echo ".exit" | nc localhost 7306
Dump on exit
ByeServer:
proc sqlserver {} {
sqlite3 db :memory:
# db timeout and all that PRAGMA jazz
# ....
if {[file exists dump.sq3]} {
puts "Dump file found"
puts "Restoring data from dump file into memory ..."
db restore dump.sq3
}
proc sqlserver_handle_client {sock addr port} {
puts "New connection from $addr:$port"
gets $sock cmd
puts "Executing: $cmd"
if {$cmd eq ".ping"} {
puts $sock "pong"
} elseif {$cmd eq ".dump"} {
db backup main dump.sq3
puts "Dumped"
puts $sock "Dumped"
} elseif {$cmd eq ".exit"} {
db backup main dump.sq3
puts "Dump on exit"
puts $sock "Dump on exit"
puts $sock "Bye"
db close
exit
} else {
set result [db eval $cmd]
puts $sock $result ;# JSON?
}
flush $sock
close $sock
}
set serverSocket [socket -server sqlserver_handle_client 7306]
puts "SQLite in memory server running on port 7306"
vwait forever
}