Skip to content

Instantly share code, notes, and snippets.

@ryansgot
Last active May 22, 2018 18:55
Show Gist options
  • Save ryansgot/d4af2cdb0068f4aa760bf9adb6aa88fc to your computer and use it in GitHub Desktop.
Save ryansgot/d4af2cdb0068f4aa760bf9adb6aa88fc to your computer and use it in GitHub Desktop.
Forsure DB Quickstart Activity
I/forsuredb-example( 1832): SaveResult{exception: null; inserted: content://com.fsryan.example.forsuredb.content/employees/1; rowsAffected: 1}
I/forsuredb-example( 1832): SaveResult{exception: null; inserted: content://com.fsryan.example.forsuredb.content/employees/2; rowsAffected: 1}
I/forsuredb-example( 1832): Employee{uuid=c00399eb-7ac2-4d34-8d5e-2bc01846413d; firstName=FS; lastName=Ryan; _id=1; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): SaveResult{exception: null; inserted: null; rowsAffected: 1}
I/forsuredb-example( 1832): Employee{uuid=c00399eb-7ac2-4d34-8d5e-2bc01846413d; firstName=First; lastName=Last; _id=1; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): Employee{uuid=3746ee35-2212-43cf-9009-1b9bfb6a07b8; firstName=Some; lastName=Employee; _id=2; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): SaveResult{exception: null; inserted: null; rowsAffected: 1}
I/forsuredb-example( 1832): Employee{uuid=c00399eb-7ac2-4d34-8d5e-2bc01846413d; firstName=First; lastName=Last; _id=1; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): Employee{uuid=3746ee35-2212-43cf-9009-1b9bfb6a07b8; firstName=Some; lastName=Employee; _id=2; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): Employee{uuid=null; firstName=Some New First Name; lastName=Some New Last Name; _id=3; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): deleted: 1
I/forsuredb-example( 1832): Employee{uuid=c00399eb-7ac2-4d34-8d5e-2bc01846413d; firstName=First; lastName=Last; _id=1; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): Employee{uuid=null; firstName=Some New First Name; lastName=Some New Last Name; _id=3; created=Tue May 22 17:29:50 EDT 2018; deleted=false; modified Tue May 22 17:29:50 EDT 2018}
I/forsuredb-example( 1832): deleted: 2
package com.fsryan.example.forsuredb
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.fsryan.forsuredb.api.Retriever
import com.fsryan.forsuredb.api.SaveResult
import java.util.*
class QuickstartActivity : AppCompatActivity() {
// acquire the implmentation of EmployeesTable generated by Forsure DB
val api = ForSure.employeesTable().api
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// create unique strings for uuid field for two records
val uuid1 = UUID.randomUUID().toString()
val uuid2 = UUID.randomUUID().toString()
// Insert a record
var saveResult = ForSure.employeesTable()
.set()
.firstName("FS")
.lastName("Ryan")
.uuid(uuid1)
.save()
logSaveResult(saveResult)
// Insert another record
saveResult = ForSure.employeesTable()
.set()
.firstName("Some")
.lastName("Employee")
.uuid(uuid2)
.save()
logSaveResult(saveResult)
// Retrieve first record by adding finding criteria
val retriever = ForSure.employeesTable()
.find().byUuid(uuid1)
.then()
.get()
logEmployeeRecordsAndClose(retriever)
// Update the first record--this is actually an upsert
// that resolves to an update because of a matching record
saveResult = ForSure.employeesTable()
.find().byFirstName("FS")
.and().byLastName("Ryan")
.then()
.set()
.firstName("First")
.lastName("Last")
.save()
logSaveResult(saveResult)
logEmployeeRecordsAndClose(ForSure.employeesTable().get())
// Upsert--in this case, it will insert because the finding
// criteria does not match any records
saveResult = ForSure.employeesTable()
.find().byFirstName("Doesn't")
.and().byLastName("Exist")
.then()
.set()
.firstName("Some New First Name")
.lastName("Some New Last Name")
.save()
logSaveResult(saveResult)
logEmployeeRecordsAndClose(ForSure.employeesTable().get())
var deleted = ForSure.employeesTable()
.find().byFirstName("Some")
.then()
.set()
.hardDelete()
Log.i("forsuredb-example", "deleted: $deleted")
logEmployeeRecordsAndClose(ForSure.employeesTable().get())
deleted = ForSure.employeesTable().set().hardDelete()
Log.i("forsuredb-example", "deleted: $deleted")
}
private fun logSaveResult(sr: SaveResult<Uri>) {
var msg = "SaveResult{exception: ${sr.exception()}"
msg += "; inserted: ${sr.inserted()}"
msg += "; rowsAffected: ${sr.rowsAffected()}}"
Log.i("forsuredb-example", msg)
}
private fun logEmployeeRecordsAndClose(retriever: Retriever) {
if (retriever.moveToFirst()) {
do { // log employee record fields using generated api
var msg = "Employee{uuid=${api.uuid(retriever)}"
msg += "; firstName=${api.firstName(retriever)}"
msg += "; lastName=${api.lastName(retriever)}"
msg += "; _id=${api.id(retriever)}"
msg += "; created=${api.created(retriever)}"
msg += "; deleted=${api.deleted(retriever)}"
msg += "; modified=${api.modified(retriever)}}"
Log.i("forsuredb-example", msg)
} while(retriever.moveToNext())
}
retriever.close()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment