From 92cf764009d6bc399ca50bb1e0aa26b4bdbd6c38 Mon Sep 17 00:00:00 2001 From: "Sam (@HandstandSam) Edwards" Date: Thu, 22 Aug 2019 20:52:09 -0400 Subject: [PATCH 1/2] Quick Start Files --- app/build.gradle | 4 +++ .../sqldelightquickstart/MainActivity.kt | 26 ++++++++++++++ .../sqldelightquickstart/ItemInCartEntity.sq | 33 ++++++++++++++++++ .../sqldelightquickstart/ItemDatabaseTest.kt | 34 +++++++++++++++++++ build.gradle | 1 + 5 files changed, 98 insertions(+) create mode 100644 app/src/main/sqldelight/com/handstandsam/sqldelightquickstart/ItemInCartEntity.sq create mode 100644 app/src/test/java/com/handstandsam/sqldelightquickstart/ItemDatabaseTest.kt diff --git a/app/build.gradle b/app/build.gradle index db86d99..5522fa9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,8 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: "com.squareup.sqldelight" + android { compileSdkVersion 28 defaultConfig { @@ -21,7 +23,9 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation "com.squareup.sqldelight:android-driver:1.1.4" testImplementation 'junit:junit:4.12' + testImplementation "com.squareup.sqldelight:sqlite-driver:1.1.4" androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } diff --git a/app/src/main/java/com/handstandsam/sqldelightquickstart/MainActivity.kt b/app/src/main/java/com/handstandsam/sqldelightquickstart/MainActivity.kt index 816e553..15dc78a 100644 --- a/app/src/main/java/com/handstandsam/sqldelightquickstart/MainActivity.kt +++ b/app/src/main/java/com/handstandsam/sqldelightquickstart/MainActivity.kt @@ -1,12 +1,38 @@ package com.handstandsam.sqldelightquickstart import android.os.Bundle +import android.util.Log import androidx.appcompat.app.AppCompatActivity +import com.squareup.sqldelight.android.AndroidSqliteDriver class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + + // Don't ever put db code in your activity, but this is a quick start guide + val androidSqlDriver = AndroidSqliteDriver( + schema = Database.Schema, + context = applicationContext, + name = "items.db" + ) + + val queries = Database(androidSqlDriver).itemInCartEntityQueries + + val itemsBefore: List = queries.selectAll().executeAsList() + Log.d("ItemDatabase", "Items Before: $itemsBefore") + + for (i in 1..3) { + queries.insertOrReplace( + label = "Item $i", + image = "https://localhost/item$i.png", + quantity = i.toLong(), + link = null + ) + } + + val itemsAfter: List = queries.selectAll().executeAsList() + Log.d("ItemDatabase", "Items After: $itemsAfter") } } diff --git a/app/src/main/sqldelight/com/handstandsam/sqldelightquickstart/ItemInCartEntity.sq b/app/src/main/sqldelight/com/handstandsam/sqldelightquickstart/ItemInCartEntity.sq new file mode 100644 index 0000000..fbca513 --- /dev/null +++ b/app/src/main/sqldelight/com/handstandsam/sqldelightquickstart/ItemInCartEntity.sq @@ -0,0 +1,33 @@ +CREATE TABLE itemInCart ( + label TEXT NOT NULL UNIQUE PRIMARY KEY, + image TEXT NOT NULL, + quantity INTEGER NOT NULL DEFAULT 0, + link TEXT +); + +selectAll: +SELECT * +FROM itemInCart +ORDER BY label; + +insertOrReplace: +INSERT OR REPLACE INTO itemInCart( + label, + image, + quantity, + link +) +VALUES (?, ?, ?, ?); + +selectByLabel: +SELECT * +FROM itemInCart +WHERE label = ?; + +empty: +DELETE FROM itemInCart; + +deleteByLabel: +DELETE +FROM itemInCart +WHERE label = ?; \ No newline at end of file diff --git a/app/src/test/java/com/handstandsam/sqldelightquickstart/ItemDatabaseTest.kt b/app/src/test/java/com/handstandsam/sqldelightquickstart/ItemDatabaseTest.kt new file mode 100644 index 0000000..eedcbba --- /dev/null +++ b/app/src/test/java/com/handstandsam/sqldelightquickstart/ItemDatabaseTest.kt @@ -0,0 +1,34 @@ +package com.handstandsam.sqldelightquickstart + +import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver +import org.junit.Assert.assertEquals +import org.junit.Test + +class ItemDatabaseTest { + + private val inMemorySqlDriver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply { + Database.Schema.create(this) + } + + private val queries = Database(inMemorySqlDriver).itemInCartEntityQueries + + @Test + fun smokeTest() { + val emptyItems: List = queries.selectAll().executeAsList() + assertEquals(emptyItems.size, 0) + + queries.insertOrReplace( + label = "Pineapple", + image = "https://localhost/pineapple.png", + quantity = 5, + link = null + ) + + val items: List = queries.selectAll().executeAsList() + assertEquals(items.size, 1) + + val pineappleItem = queries.selectByLabel("Pineapple").executeAsOneOrNull() + assertEquals(pineappleItem?.image, "https://localhost/pineapple.png") + assertEquals(pineappleItem?.quantity?.toInt(), 5) + } +} diff --git a/build.gradle b/build.gradle index d50acd1..91dbb36 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.squareup.sqldelight:gradle-plugin:1.1.4" } } From bfcd8e224eee3050ae5785096d32b7290780ab57 Mon Sep 17 00:00:00 2001 From: "Sam (@HandstandSam) Edwards" Date: Sun, 1 Sep 2019 19:12:34 -0400 Subject: [PATCH 2/2] Upgraded SQLDelight from 1.1.4 -> 1.2.0 --- app/build.gradle | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5522fa9..c116b47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,9 +23,9 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation "com.squareup.sqldelight:android-driver:1.1.4" + implementation "com.squareup.sqldelight:android-driver:1.2.0" testImplementation 'junit:junit:4.12' - testImplementation "com.squareup.sqldelight:sqlite-driver:1.1.4" + testImplementation "com.squareup.sqldelight:sqlite-driver:1.2.0" androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } diff --git a/build.gradle b/build.gradle index 91dbb36..4dcc20a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "com.squareup.sqldelight:gradle-plugin:1.1.4" + classpath "com.squareup.sqldelight:gradle-plugin:1.2.0" } }