Add sqlite3 debug scripts

Running sqlite3 CLI on the device can be tedious to use because it
doesn't allow repeating/editing commands or history.

This change adds 2 useful functions:
1. sqlite3-pull: Pulls db along with WAL journal file to get the
latest rows that might not have been committed to the db file.
Additionally, this commands deletes the insert/update/delete triggers
from the pulled db. Otherwise, the corresponding db operations would
fail because the requisite _insert/_update/_delete functions would be
unavailable

2. sqlite3-push: Pushes the (possibly modified) db and WAL journal
file to the device. Additionally trigering the db update flow so that
triggers can be recreated

Test: Manual
Bug: 151076202
Change-Id: Id8f218310ae5a41400812b42e4bd0db89aff58d4
diff --git a/sqlite3.sh b/sqlite3.sh
new file mode 100644
index 0000000..7f7780b
--- /dev/null
+++ b/sqlite3.sh
@@ -0,0 +1,69 @@
+# sudo apt-get install rlwrap to have a more fully featured sqlite CLI
+set -x
+
+function sqlite3-pull () {
+    adb root
+    if [ -z "$1" ]
+    then
+        dir=$(pwd)
+    else
+        dir=$1
+    fi
+    package=$(get-package)
+
+    rm $dir/external.db
+    rm $dir/external.db-wal
+
+    adb pull /data/user/0/$package/databases/external.db $dir/external.db
+    adb pull /data/user/0/$package/databases/external.db-wal "$dir/external.db-wal"
+
+    sqlite3 $dir/external.db "drop trigger files_insert"
+    sqlite3 $dir/external.db "drop trigger files_update"
+    sqlite3 $dir/external.db "drop trigger files_delete"
+
+    rlwrap sqlite3 $dir/external.db
+}
+
+function sqlite3-push () {
+    adb root
+    if [ -z "$1" ]
+    then
+        dir=$(pwd)
+    else
+        dir=$1
+    fi
+    package=$(get-package)
+
+    adb push $dir/external.db /data/user/0/$package/databases/external.db
+    adb push $dir/external.db-wal /data/user/0/$package/databases/external.db-wal
+
+    sqlite3-trigger-upgrade
+}
+
+function sqlite3-trigger-upgrade () {
+    package=$(get-package)
+
+    # Doesn't actually upgrade the db because db version is hardcoded in code
+    # It however triggers upgrade path
+    check_string="/data/user/0/$package/databases/external.db \"pragma user_version\""
+    version=$(adb shell sqlite3 $check_string)
+    echo "Old version: $version"
+
+    version=$((version+1))
+    upgrade_string="/data/user/0/$package/databases/external.db \"pragma user_version=$version\""
+    adb shell sqlite3 $upgrade_string
+
+    version=$(adb shell sqlite3 $check_string)
+    echo "New version: $version"
+
+    adb shell am force-stop $package
+}
+
+function get-package() {
+    if [ -z "$(adb shell pm list package com.android.providers.media.module)" ]
+    then
+        echo "com.google.android.providers.media.module"
+    else
+        echo "com.android.providers.media.module"
+    fi
+}