|
|
|
|
@ -30,12 +30,14 @@ import net.micode.notes.data.Notes.NoteColumns;
|
|
|
|
|
public class NotesDatabaseHelper extends SQLiteOpenHelper {
|
|
|
|
|
private static final String DB_NAME = "note.db";
|
|
|
|
|
|
|
|
|
|
private static final int DB_VERSION = 6;
|
|
|
|
|
private static final int DB_VERSION = 9;
|
|
|
|
|
|
|
|
|
|
public interface TABLE {
|
|
|
|
|
public static final String NOTE = "note";
|
|
|
|
|
|
|
|
|
|
public static final String DATA = "data";
|
|
|
|
|
// [新增]
|
|
|
|
|
public static final String USER_ACCOUNT = "user_account";
|
|
|
|
|
public static final String CHAT_MESSAGES = "chat_messages";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static final String TAG = "NotesDatabaseHelper";
|
|
|
|
|
@ -67,8 +69,36 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
|
|
|
|
|
NoteColumns.VIEW_MODE + " INTEGER NOT NULL DEFAULT 0," +
|
|
|
|
|
NoteColumns.CUSTOM_BG_URI + " TEXT NOT NULL DEFAULT ''," +
|
|
|
|
|
NoteColumns.EXPAND_1 + " TEXT NOT NULL DEFAULT ''" +
|
|
|
|
|
// [新增字段 v9]
|
|
|
|
|
NoteColumns.SYNC_STATE + " INTEGER DEFAULT 1," +
|
|
|
|
|
NoteColumns.SERVER_ID + " TEXT," +
|
|
|
|
|
NoteColumns.IS_AGENDA + " INTEGER DEFAULT 0," +
|
|
|
|
|
NoteColumns.AGENDA_DATE + " INTEGER DEFAULT 0," +
|
|
|
|
|
NoteColumns.IS_COMPLETED + " INTEGER DEFAULT 0," +
|
|
|
|
|
NoteColumns.EMOTION_TAG + " TEXT" +
|
|
|
|
|
")";
|
|
|
|
|
|
|
|
|
|
// [新增] 用户表建表语句
|
|
|
|
|
private static final String CREATE_USER_TABLE_SQL =
|
|
|
|
|
"CREATE TABLE " + TABLE.USER_ACCOUNT + "(" +
|
|
|
|
|
Notes.AccountColumns.UID + " TEXT PRIMARY KEY," +
|
|
|
|
|
Notes.AccountColumns.EMAIL + " TEXT," +
|
|
|
|
|
Notes.AccountColumns.TOKEN + " TEXT," +
|
|
|
|
|
Notes.AccountColumns.AVATAR_URL + " TEXT" +
|
|
|
|
|
")";
|
|
|
|
|
|
|
|
|
|
// [新增] 聊天消息表建表语句
|
|
|
|
|
private static final String CREATE_CHAT_TABLE_SQL =
|
|
|
|
|
"CREATE TABLE " + TABLE.CHAT_MESSAGES + "(" +
|
|
|
|
|
Notes.ChatColumns.ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
|
|
|
|
|
Notes.ChatColumns.SESSION_ID + " TEXT," +
|
|
|
|
|
Notes.ChatColumns.SENDER_TYPE + " INTEGER DEFAULT 0," +
|
|
|
|
|
Notes.ChatColumns.CONTENT + " TEXT," +
|
|
|
|
|
Notes.ChatColumns.MSG_TYPE + " INTEGER DEFAULT 0," +
|
|
|
|
|
Notes.ChatColumns.CREATED_AT + " INTEGER," +
|
|
|
|
|
Notes.ChatColumns.SYNC_STATE + " INTEGER DEFAULT 1" +
|
|
|
|
|
")";
|
|
|
|
|
|
|
|
|
|
private static final String CREATE_DATA_TABLE_SQL =
|
|
|
|
|
"CREATE TABLE " + TABLE.DATA + "(" +
|
|
|
|
|
DataColumns.ID + " INTEGER PRIMARY KEY," +
|
|
|
|
|
@ -304,6 +334,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
|
|
|
|
|
public void onCreate(SQLiteDatabase db) {
|
|
|
|
|
createNoteTable(db);
|
|
|
|
|
createDataTable(db);
|
|
|
|
|
// [新增]
|
|
|
|
|
db.execSQL(CREATE_USER_TABLE_SQL);
|
|
|
|
|
db.execSQL(CREATE_CHAT_TABLE_SQL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@ -341,6 +374,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
|
|
|
|
|
oldVersion++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [新增] 核心升级逻辑:从 v6 直接跳到 v9,或者逐步升级
|
|
|
|
|
if (oldVersion < 9) {
|
|
|
|
|
upgradeToV9(db);
|
|
|
|
|
oldVersion = 9;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (reCreateTriggers) {
|
|
|
|
|
reCreateNoteTableTriggers(db);
|
|
|
|
|
reCreateDataTableTriggers(db);
|
|
|
|
|
@ -396,4 +435,21 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
|
|
|
|
|
db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.CUSTOM_BG_URI + " TEXT NOT NULL DEFAULT ''");
|
|
|
|
|
db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.EXPAND_1 + " TEXT NOT NULL DEFAULT ''");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void upgradeToV9(SQLiteDatabase db) {
|
|
|
|
|
Log.d(TAG, "Upgrading database to version 9...");
|
|
|
|
|
|
|
|
|
|
// 1. 为 NOTE 表增加新列
|
|
|
|
|
// 使用 try-catch 包裹每个 ALTER 语句,防止部分列已存在的异常
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.SYNC_STATE + " INTEGER DEFAULT 1"); } catch(Exception e){}
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.SERVER_ID + " TEXT"); } catch(Exception e){}
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.IS_AGENDA + " INTEGER DEFAULT 0"); } catch(Exception e){}
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.AGENDA_DATE + " INTEGER DEFAULT 0"); } catch(Exception e){}
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.IS_COMPLETED + " INTEGER DEFAULT 0"); } catch(Exception e){}
|
|
|
|
|
try { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.EMOTION_TAG + " TEXT"); } catch(Exception e){}
|
|
|
|
|
|
|
|
|
|
// 2. 创建新表
|
|
|
|
|
try { db.execSQL(CREATE_USER_TABLE_SQL); } catch(Exception e){ Log.e(TAG, "Create user table failed: " + e); }
|
|
|
|
|
try { db.execSQL(CREATE_CHAT_TABLE_SQL); } catch(Exception e){ Log.e(TAG, "Create chat table failed: " + e); }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|