~aleteoryx/muditaos

2aa015ca5e9181495a299613174467ea7d61b101 — Tomek Sobkowiak 5 years ago be0a869
[EDG-4347] Load script to init sms database (#1015)

Co-authored-by: Radosław Wicik <60609724+rwicik@users.noreply.github.com>
A image/user/db/sms_001.sql => image/user/db/sms_001.sql +40 -0
@@ 0,0 1,40 @@
CREATE TABLE IF NOT EXISTS sms
(
    _id        INTEGER PRIMARY KEY,
    thread_id  INTEGER,
    contact_id INTEGER,
    date       INTEGER,
    date_send  INTEGER,
    error_code INTEGER,
    body       TEXT NOT_NULL,
    type       INTEGER,
    FOREIGN KEY (thread_id) REFERENCES threads (_id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS templates
(
    _id                INTEGER PRIMARY KEY,
    text               TEXT,
    lastUsageTimestamp INTEGER
);

CREATE TABLE IF NOT EXISTS threads
(
    _id        INTEGER PRIMARY KEY,
    date       INTEGER,
    msg_count  INTEGER,
    read       INTEGER,
    contact_id INTEGER,
    number_id  INTEGER,
    snippet    TEXT NOT NULL,
    last_dir   INTEGER
);

CREATE TABLE IF NOT EXISTS threads_count
(
    _id   INTEGER PRIMARY KEY,
    count INTEGER
);

CREATE TRIGGER IF NOT EXISTS on_thread_insert AFTER INSERT ON threads BEGIN UPDATE threads_count SET count=count+1 WHERE _id=1; END;
CREATE TRIGGER IF NOT EXISTS on_thread_remove AFTER DELETE ON threads BEGIN UPDATE threads_count SET count=count-1 WHERE _id=1; END;

A image/user/db/sms_002.sql => image/user/db/sms_002.sql +1 -0
@@ 0,0 1,1 @@
INSERT OR IGNORE INTO threads_count ( _id, count ) VALUES (1,0);

A image/user/db/sms_003.sql => image/user/db/sms_003.sql +31 -0
@@ 0,0 1,31 @@
BEGIN TRANSACTION;
INSERT OR REPLACE INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (1,1,1,1547465101,1,1,'najstarsze odb fsjdklafjskldjf',4);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (2,1,1,1547468701,2,2,'wys',8);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (4,1,1,1547472320,4,1,'najnowsze odb i całkiem 1 1 1 1 długie. długie długie długie, wcale nie krótkie.
od nowej lini (\n); i_teraz_zbyt_długa_linia_żeby_się_zmieścić',4);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (5,1,1,1547482320,3,2,'(dziwne znaczki: „”ẃ½€≠§³¢)',8);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (6,1,1,1547492320,3,2,'nieudane wysyłanie :(',2);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (7,2,2,1547492320,3,0,'Ciężko powiedzieć o czym  ta wiadomość jest, ale jest dość długa.',2);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (8,2,2,1547492320,4,0,'heh?',4);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (9,3,3,1547492320,1,0,'ping',2);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (10,3,3,1547492320,2,0,'pong',4);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (11,4,4,1547492320,2,0,'ping',4);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (12,5,5,1547492320,2,0,'ping',2);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (13,6,6,1547492320,2,0,'ping',8);
INSERT OR REPLACE  INTO "sms" ("_id","thread_id","contact_id","date","date_send","error_code","body","type") VALUES (14,1,1,1547472301,3,2,'prawie najnowsze odb.',4);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (1,'Thanks for reaching out. I can''t talk right now, I''ll call you later',4);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (2,'I''ll call you later',3);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (3,'I''ll be there in 15 minutes',2);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (4,'Some test tmplate number, which is too long to be displayed.',1);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (5,'No.',0);
INSERT OR REPLACE  INTO "templates" ("_id","text","lastUsageTimestamp") VALUES (6,'Zadzwonię później, walczę z ostrym cieniem mgły ;)',NULL);
INSERT OR REPLACE  INTO "threads_count" ("_id","count") VALUES (1,2);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (1,1574335694,6,1,1,1,'Wiadomość testowa.',1);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (2,2,2,0,2,2,'How are You?
',2);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (3,3,2,1,3,3,'Lorem ipsum dolor sit amet, consectetur adipiscing',4);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (4,4,1,0,4,4,'Lorem ipsum dolor sit amet, consectetur adipiscing',8);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (5,5,1,1,5,5,'Lorem ipsum dolor sit amet, consectetur adipiscing',16);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (6,5,1,0,6,6,'cos tam',8);
INSERT OR REPLACE  INTO "threads" ("_id","date","msg_count","read","contact_id","number_id","snippet","last_dir") VALUES (7,1,1,1,7,7,'cdcd',4);
COMMIT;

D image/user/sms.db => image/user/sms.db +0 -0
M module-db/Databases/SmsDB.cpp => module-db/Databases/SmsDB.cpp +0 -12
@@ 7,16 7,4 @@
const char *SmsDB::dbName = USER_PATH("sms.db");

SmsDB::SmsDB() : Database(dbName), sms(this), threads(this), templates(this)
{
    if (sms.create() == false)
        return;
    if (threads.create() == false)
        return;
    if (templates.create() == false)
        return;

    isInitialized_ = true;
}

SmsDB::~SmsDB()
{}

M module-db/Databases/SmsDB.hpp => module-db/Databases/SmsDB.hpp +1 -1
@@ 12,7 12,7 @@ class SmsDB : public Database
{
  public:
    SmsDB();
    ~SmsDB();
    ~SmsDB() = default;

    SMSTable sms;
    ThreadsTable threads;

M module-db/Tables/SMSTable.cpp => module-db/Tables/SMSTable.cpp +1 -1
@@ 9,7 9,7 @@ SMSTable::SMSTable(Database *db) : Table(db)

bool SMSTable::create()
{
    return db->execute(createTableQuery);
    return true;
}

bool SMSTable::add(SMSTableRow entry)

M module-db/Tables/SMSTable.hpp => module-db/Tables/SMSTable.hpp +0 -12
@@ 57,16 57,4 @@ class SMSTable : public Table<SMSTableRow, SMSTableFields>
    SMSTableRow getDraftByThreadId(uint32_t threadId);

    std::pair<uint32_t, std::vector<SMSTableRow>> getManyByType(SMSType type, uint32_t offset, uint32_t limit);

  private:
    const char *createTableQuery = "CREATE TABLE IF NOT EXISTS sms("
                                   "_id INTEGER PRIMARY KEY,"
                                   "thread_id INTEGER,"
                                   "contact_id INTEGER,"
                                   "date INTEGER,"
                                   "date_send INTEGER,"
                                   "error_code INTEGER,"
                                   "body TEXT NOT_NULL,"
                                   "type INTEGER,"
                                   "FOREIGN KEY(thread_id) REFERENCES threads(_id) ON DELETE CASCADE );";
};

M module-db/Tables/SMSTemplateTable.cpp => module-db/Tables/SMSTemplateTable.cpp +1 -1
@@ 16,7 16,7 @@ SMSTemplateTable::~SMSTemplateTable()

bool SMSTemplateTable::create()
{
    return db->execute(createTableQuery);
    return true;
}

bool SMSTemplateTable::add(SMSTemplateTableRow entry)

M module-db/Tables/SMSTemplateTable.hpp => module-db/Tables/SMSTemplateTable.hpp +0 -6
@@ 41,10 41,4 @@ class SMSTemplateTable : public Table<SMSTemplateTableRow, SMSTemplateTableField
    uint32_t count() override final;
    uint32_t count(EntryState state);
    uint32_t countByFieldId(const char *field, uint32_t id) override final;

  private:
    const char *createTableQuery = "CREATE TABLE IF NOT EXISTS templates("
                                   "_id INTEGER PRIMARY KEY,"
                                   "text TEXT,"
                                   "lastUsageTimestamp INTEGER)";
};

M module-db/Tables/ThreadsTable.cpp => module-db/Tables/ThreadsTable.cpp +0 -12
@@ 9,18 9,6 @@ ThreadsTable::ThreadsTable(Database *db) : Table(db)

bool ThreadsTable::create()
{
    // Create necessary tables
    if (!db->execute(createTableQuery))
        return false;
    if (!db->execute(createTableThreadsCounterQuery))
        return false;
    if (!db->execute(threadsCounterInsertionQuery))
        return false;
    if (!db->execute(threadInsertTriggerQuery))
        return false;
    if (!db->execute(threadRemoveTriggerQuery))
        return false;

    return true;
}


M module-db/Tables/ThreadsTable.hpp => module-db/Tables/ThreadsTable.hpp +0 -22
@@ 55,26 55,4 @@ class ThreadsTable : public Table<ThreadsTableRow, ThreadsTableFields>

    /// returns: { maximum_query_depth, vector {requested amount of data which match} }
    std::pair<uint32_t, std::vector<ThreadsTableRow>> getBySMSQuery(std::string text, uint32_t offset, uint32_t limit);

  private:
    const char *createTableQuery = "CREATE TABLE IF NOT EXISTS threads("
                                   "_id INTEGER PRIMARY KEY,"
                                   "date INTEGER,"
                                   "msg_count INTEGER,"
                                   "read INTEGER,"
                                   "contact_id INTEGER,"
                                   "number_id INTEGER,"
                                   "snippet TEXT NOT NULL,"
                                   "last_dir INTEGER"
                                   ");";

    const char *createTableThreadsCounterQuery = "CREATE TABLE IF NOT EXISTS threads_count "
                                                 "(_id INTEGER PRIMARY KEY,"
                                                 "count INTEGER );";

    const char *threadsCounterInsertionQuery = "INSERT OR IGNORE INTO threads_count ( _id, count ) VALUES (1,0);";
    const char *threadInsertTriggerQuery     = "CREATE TRIGGER IF NOT EXISTS on_thread_insert AFTER INSERT ON threads "
                                           "BEGIN UPDATE threads_count SET count=count+1 WHERE _id=1; END";
    const char *threadRemoveTriggerQuery = "CREATE TRIGGER IF NOT EXISTS on_thread_remove AFTER DELETE ON threads "
                                           "BEGIN UPDATE threads_count SET count=count-1 WHERE _id=1; END";
};