@@ -43,19 +43,26 @@ public class DbHelper extends SQLiteOpenHelper {
4343 public static final String TO_AMOUNT_COLUMN = "to_amount" ;
4444 public static final String CREATED_AT_COLUMN = "created_at" ;
4545
46+ /* DB_VERSION = 3 */
47+ public static final String TABLE_RATES = "rates" ;
48+ public static final String FROM_CURRENCY_COLUMN = "from_currency" ;
49+ public static final String TO_CURRENCY_COLUMN = "to_currency" ;
50+ public static final String AMOUNT_COLUMN = "amount" ;
51+
4652 public DbHelper (Context context ) {
4753 super (context , DB_NAME , null , DB_VERSION );
4854 }
4955
5056 @ Override
5157 public void onCreate (SQLiteDatabase db ) {
5258 //createDbVersion1(db);
53- createDbVersion2 (db );
59+ //createDbVersion2(db);
60+ createDbVersion3 (db );
5461 }
5562
5663 @ Override
5764 public void onUpgrade (SQLiteDatabase db , int oldVersion , int newVersion ) {
58- if (oldVersion == 1 && newVersion == 2 ) {
65+ if (oldVersion < 2 ) {
5966 db .beginTransaction ();
6067
6168 createAccountsTable (db );
@@ -77,6 +84,19 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
7784
7885 db .endTransaction ();
7986 }
87+
88+ if (oldVersion < 3 ) {
89+ db .beginTransaction ();
90+
91+ createRatesTable (db );
92+
93+ /* Add account_id column into the records table */
94+ db .execSQL ("ALTER TABLE " + TABLE_RECORDS + " ADD COLUMN " + CURRENCY_COLUMN + " INTEGER;" );
95+
96+ db .setTransactionSuccessful ();
97+
98+ db .endTransaction ();
99+ }
80100 }
81101
82102 @ SuppressWarnings ("unused" )
@@ -94,6 +114,7 @@ private void createDbVersion1(SQLiteDatabase db) {
94114 + NAME_COLUMN + " TEXT" + ");" );
95115 }
96116
117+ @ SuppressWarnings ("unused" )
97118 private void createDbVersion2 (SQLiteDatabase db ) {
98119 db .execSQL ("CREATE TABLE " + TABLE_RECORDS + "("
99120 + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
@@ -115,6 +136,30 @@ private void createDbVersion2(SQLiteDatabase db) {
115136 insertDefaultAccount (db );
116137 }
117138
139+ private void createDbVersion3 (SQLiteDatabase db ) {
140+ db .execSQL ("CREATE TABLE " + TABLE_RECORDS + "("
141+ + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
142+ + TIME_COLUMN + " INTEGER,"
143+ + TYPE_COLUMN + " INTEGER,"
144+ + TITLE_COLUMN + " TEXT,"
145+ + CATEGORY_ID_COLUMN + " INTEGER,"
146+ + PRICE_COLUMN + " INTEGER,"
147+ + ACCOUNT_ID_COLUMN + " INTEGER,"
148+ + CURRENCY_COLUMN + " TEXT);" );
149+
150+ db .execSQL ("CREATE TABLE " + TABLE_CATEGORIES + "("
151+ + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
152+ + NAME_COLUMN + " TEXT" + ");" );
153+
154+ createAccountsTable (db );
155+
156+ createTransfersTable (db );
157+
158+ createRatesTable (db );
159+
160+ insertDefaultAccount (db );
161+ }
162+
118163 private void createAccountsTable (SQLiteDatabase db ) {
119164 db .execSQL ("CREATE TABLE " + TABLE_ACCOUNTS + "("
120165 + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
@@ -134,6 +179,15 @@ private void createTransfersTable(SQLiteDatabase db) {
134179 + TO_AMOUNT_COLUMN + " INTEGER);" );
135180 }
136181
182+ private void createRatesTable (SQLiteDatabase db ) {
183+ db .execSQL ("CREATE TABLE " + TABLE_RATES + "("
184+ + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
185+ + CREATED_AT_COLUMN + " INTEGER,"
186+ + FROM_CURRENCY_COLUMN + " INTEGER,"
187+ + TO_CURRENCY_COLUMN + " INTEGER,"
188+ + AMOUNT_COLUMN + " REAL);" );
189+ }
190+
137191 private long insertDefaultAccount (SQLiteDatabase db ) {
138192 /* Insert default account for all records from DB_VERSION = 1 */
139193 ContentValues contentValues = new ContentValues ();
0 commit comments