2013-04-21 13:01:26 +00:00
|
|
|
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";
|
2013-04-24 13:48:44 +00:00
|
|
|
public static final int DATABASE_VERSION = 4;
|
2013-04-21 13:01:26 +00:00
|
|
|
|
|
|
|
public DatabaseHelper(Context context) {
|
|
|
|
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(SQLiteDatabase db) {
|
2013-04-24 13:48:44 +00:00
|
|
|
db.execSQL("DROP VIEW IF EXISTS cats_unread;");
|
|
|
|
db.execSQL("DROP VIEW IF EXISTS feeds_unread;");
|
|
|
|
db.execSQL("DROP TRIGGER IF EXISTS articles_set_modified;");
|
2013-04-21 13:01:26 +00:00
|
|
|
db.execSQL("DROP TABLE IF EXISTS categories;");
|
|
|
|
db.execSQL("DROP TABLE IF EXISTS feeds;");
|
|
|
|
db.execSQL("DROP TABLE IF EXISTS articles;");
|
|
|
|
|
|
|
|
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, " +
|
2013-04-24 13:48:44 +00:00
|
|
|
"score INTEGER, " +
|
2013-04-21 13:01:26 +00:00
|
|
|
"updated INTEGER, " +
|
|
|
|
"is_updated BOOLEAN, " +
|
|
|
|
"title TEXT, " +
|
|
|
|
"link TEXT, " +
|
|
|
|
"feed_id INTEGER, " +
|
|
|
|
"tags TEXT, " +
|
|
|
|
"content TEXT, " +
|
2013-04-24 14:07:51 +00:00
|
|
|
"author TEXT, " +
|
2013-04-21 13:01:26 +00:00
|
|
|
"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, " +
|
|
|
|
"cat_id, " +
|
|
|
|
"SUM(articles.unread) AS unread FROM feeds " +
|
|
|
|
"LEFT JOIN articles ON (articles.feed_id = feeds."+BaseColumns._ID+") " +
|
|
|
|
"GROUP BY feeds."+BaseColumns._ID+", feeds.title;");
|
|
|
|
|
|
|
|
//sqlite> select categories._id,categories.title,sum(articles.unread) from categories left j
|
|
|
|
//oin feeds on (feeds.cat_id = categories._id) left join articles on (articles.feed_id = fee
|
|
|
|
//ds._id) group by categories._id;
|
|
|
|
|
|
|
|
db.execSQL("CREATE VIEW cats_unread AS SELECT categories."+BaseColumns._ID+" AS "+BaseColumns._ID+", " +
|
|
|
|
"categories.title AS title, " +
|
|
|
|
"SUM(articles.unread) AS unread FROM categories " +
|
|
|
|
"LEFT JOIN feeds ON (feeds.cat_id = categories."+BaseColumns._ID+") "+
|
|
|
|
"LEFT JOIN articles ON (articles.feed_id = feeds."+BaseColumns._ID+") " +
|
|
|
|
"GROUP BY categories."+BaseColumns._ID+", categories.title;");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
|
|
|
onCreate(db);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|