Skip to content

Latest commit

 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

A simple command-line utility for key-value storage based on an sqlite3 db

Usage

sqey [options] <database> [options] <command> [args...]

Examples

# Store and retrieve values
sqey example1.db set name Alice age 30 city London
sqey example1.db get name age city
# Alice
# 30
# London

# Read key-value pairs from stdin
echo -e "foo\nbar\nbaz\nqux" | sqey example2.db -I set
sqey example2.db keys
# foo
# baz

# Key-values in the reverse order of keys
sqey example2.db -r key-values
# baz
# qux
# foo
# bar

# Create DB on first use (`get-or-else` doesn't write the default value)
sqey new.db -n get-or-else planet unknown
# unknown
sqey new.db keys

Building

Supported Zig version is 0.16.0

zig build in the project folder for debug build

zig build --release=small for the release build

This utility requires sqlite3 c library to be installed on your machine

Tested on Arch Linux and MacOS

Commands

Command Description Example
set Insert or update key-value pairs sqey example.db set name Alice age 30
get Retrieve values by key. Fails if any key is missing sqey example.db get name age
get-or-else Retrieve value, or print a default if missing sqey example.db get-or-else country N/A
get-or-else-set Like get-or-else, but also stores the default sqey example.db get-or-else-set country UK
keys List all keys sqey example.db keys
key-values List all keys and values (alternating) sqey example.db key-values
keys-like List keys matching a SQL LIKE pattern sqey example.db keys-like 'na%'
delete Delete keys. Fails if any key is missing sqey example.db delete city
delete-if-exists Delete keys without error if missing sqey example.db delete-if-exists missing_key
rename Rename keys (pairs of old/new names) sqey example.db rename old_key new_key
compare-and-swap Compare and swap multiple key-value pairs. Fails if any old value does not match current value sqey example.db compare-and-swap key1 old1 new1 key2 old2 new2

All commands that accept keys or key-value pairs can accept more than one in a single invocation

Options

Option Description
-n Create the database file if it does not exist (set and get-or-else-set default to true)
-o Open in readonly mode (write commands fail)
-r Reverse output order for keys, key-values, etc.
-I Read commands and arguments from stdin (uses \n delimiter). Mutually exclusive with -Z/-B/-S
-z Use null (\0) instead of newline as output separator
-Z Use null (\0) instead of newline as input delimiter (uses stdin)
-b Use binary output format (32-bit unsigned little-endian length prefix per token)
-B Use binary input format (32-bit unsigned little-endian length prefix per token, uses stdin)
-s Single entry output mode: output without separators
-S Single entry input mode: treat all input as one value (uses stdin)
-h / --help Print help

Options can be combined: sqey example.db -rn keys (reverse, create-if-missing).

About

Simple command-line tool for sqlite3-based key-value storage

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages