diff options
author | Teddy Wing | 2019-06-09 21:43:48 +0200 |
---|---|---|
committer | Teddy Wing | 2019-06-09 21:47:49 +0200 |
commit | df93125733ef95038e9281f605e117ec805218f6 (patch) | |
tree | 47645a757a4c94659526780880b31e2a57e253ef /code-review-database | |
parent | 3ff388797bc3abe7b9996877db4f2fcd860f01f0 (diff) | |
download | code-review-df93125733ef95038e9281f605e117ec805218f6.tar.bz2 |
Move database functions from code-review-start to code-review-database
Put these functions in a function-only file that can be sourced by other
scripts that need database access.
Diffstat (limited to 'code-review-database')
-rw-r--r-- | code-review-database | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/code-review-database b/code-review-database new file mode 100644 index 0000000..642f9c4 --- /dev/null +++ b/code-review-database @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +GIT_ROOT="$(git rev-parse --show-toplevel)" +DATABASE="${GIT_ROOT}/.git/info/code-review.sqlite" + +function create_database () { + sqlite3 "$DATABASE" <<-SQL + BEGIN TRANSACTION; + + CREATE TABLE IF NOT EXISTS merge_bases ( + id INTEGER PRIMARY KEY, + head TEXT NOT NULL, + base TEXT NOT NULL + ); + + COMMIT; + SQL +} + +function create_database_if_not_exists () { + if [ ! -f "$DATABASE" ]; then + create_database + fi +} + +function create_merge_base () { + local head="$1" + local base="$2" + + # TODO: Change to upsert or equivalent + sqlite3 "$DATABASE" <<-SQL + BEGIN TRANSACTION; + + INSERT INTO merge_bases + (head, base) + VALUES + ( + '$head', + '$base' + ); + + COMMIT; + SQL +} + +function create_merge_base_from_current () { + local base="$1" + + create_merge_base "$(current_branch)" "$base" +} + +function get_merge_base () { + local head="$(current_branch)" + local default_base='master' + + if git config remote.origin.url > /dev/null; then + default_base='origin/master' + fi + + sqlite3 "$DATABASE" <<-SQL + BEGIN TRANSACTION; + + SELECT ifnull(max(base), '$default_base') + FROM merge_bases + WHERE head = '$head' + LIMIT 1; + + COMMIT; + SQL +} + +function current_branch () { + git rev-parse --abbrev-ref HEAD +} |