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 +} | 
