C++ (Qt)void Model::init(QString connection){ collection.clear(); collection.insert("user", new ModelUser(connection)); // пользователь collection.insert("session", new ModelSession(connection)); // у пользователя есть его сессии collection.insert("submission",new ModelSubmission(connection)); // и его "решения"}
C++ (Qt)ModelUser::ModelUser(QString connection):Model(connection){ useTable="users"; addLink(LT_HasMany,"session", "id","uid"); // связываем модели здесь. Минус - использование константы addLink(LT_HasMany,"submission", "id","uid"); }
C++ (Qt) ModelUser u; Var res=u.fetchAll(Var(),1); // прототип Var Model::fetchAll(Var where,int depth)
Javascript[ { "_session" : [ { "id" : "1", "last_hit" : "2010-11-14 01:46:43", "sid" : "93968137971e79d5b7b0c9451ecb8bb2", "uid" : "1" }, { "id" : "2", "last_hit" : "2010-11-14 01:47:17", "sid" : "77e70c5045398b09204af9e9d29002e9", "uid" : "1" } ], "_submission" : [ { "id" : "1", "lang_id" : "1", "message" : "undefined reference to `main`", "send" : "2010-11-11 23:43:41", "status" : "2", "task_id" : "1", "txt" : "#include <iostream>\nint main (int argc, char* argv [])\n{\nstd::cout << \"Hello, world!\" << std::endl;\nreturn 0;\n}", "uid" : "1" } ], "famil" : "Фамилия", "id" : "1", "ima" : "Имя", "login" : "user", "otch" : "Отчество", "passhash" : "d8578edf8458ce06fbc5bb76a58c5ca4", "rights" : "1"} ];
C++ (Qt)QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",QLatin1String( QSqlDatabase::defaultConnection )); db.setDatabaseName("db.sqlite"); QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","thread1"); db1.setDatabaseName("db.sqlite"); QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE","thread2"); db2.setDatabaseName("db.sqlite");
Model::init();
Model::init("thread1");
C++ (Qt) // извлечение строки Var fetchRow(QString querytext, Var bind); Var fetchRow(Var where); Var fetchById(int id); Var fetchById(QString id); // извлечение набора строк Var fetchAll(Var where,QString order="",int limit=0,int offset=0, int depth=0); Var fetchAll(Var where,int depth); Var fetchAll(QString querytext, Var bind); // вставка записи int insert(Var record); // обновление записи int update(Var record,int id); int update(Var record,Var where); // удаление int delet(int id); int delet(Var where); void truncate();// очистка // добавление связи с другими моделями void addLink(LinkingType link_type, QString dest_model, QString source_key, QString dest_key);