summaryrefslogtreecommitdiff
path: root/src/org/fox/ttrss/util/DatabaseHelper.java
blob: 345e0782dc6de6e9af4908d2c56fad6506244bd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package org.fox.ttrss.util;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;


public class DatabaseHelper extends SQLiteOpenHelper {

	@SuppressWarnings("unused")
	private final String TAG = this.getClass().getSimpleName();
	public static final String DATABASE_NAME = "OfflineStorage.db";
	public static final int DATABASE_VERSION = 3;
	
	public DatabaseHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("DROP TABLE IF EXISTS categories;");
		db.execSQL("DROP TABLE IF EXISTS feeds;");
		db.execSQL("DROP TABLE IF EXISTS articles;");
		db.execSQL("DROP VIEW IF EXISTS feeds_unread;");
		db.execSQL("DROP TRIGGER IF EXISTS articles_set_modified;");
		
		db.execSQL("CREATE TABLE IF NOT EXISTS feeds (" +
                BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                "feed_url TEXT, " +
                "title TEXT, " +
                "has_icon BOOLEAN, " +
                "cat_id INTEGER" +
                ");");                

		db.execSQL("CREATE TABLE IF NOT EXISTS categories (" +
                BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                "title TEXT" +
                ");");                

		db.execSQL("CREATE TABLE IF NOT EXISTS articles (" +
                BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                "unread BOOLEAN, " +
                "marked BOOLEAN, " +
                "published BOOLEAN, " +
                "updated INTEGER, " +
                "is_updated BOOLEAN, " +
                "title TEXT, " +
                "link TEXT, " +
                "feed_id INTEGER, " +
                "tags TEXT, " +
                "content TEXT, " +
                "selected BOOLEAN, " +
                "modified BOOLEAN" +
                ");");
		
		db.execSQL("CREATE TRIGGER articles_set_modified UPDATE OF marked, published, unread ON articles " +
		"BEGIN " +
		" UPDATE articles SET modified = 1 WHERE " + BaseColumns._ID + " = " + "OLD." + BaseColumns._ID + "; " +
		"END;");
		
		db.execSQL("CREATE VIEW feeds_unread AS SELECT feeds."+BaseColumns._ID+" AS "+BaseColumns._ID+", " +
				"feeds.title AS title, " +
				"SUM(articles.unread) AS unread FROM feeds " +
				"LEFT JOIN articles ON (articles.feed_id = feeds."+BaseColumns._ID+") " +
				"GROUP BY feeds."+BaseColumns._ID+", feeds.title;");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		onCreate(db);
	}

}