CloudSessionRecord CloudSessionRecord::factoryFromCloudSession(const CloudSession& cloudSession, ProjectDatabase& database) { if (cloudSession.optionalCast<VagrantSession>()) { return VagrantSessionRecord(cloudSession.cast<VagrantSession>(), database); } if (cloudSession.optionalCast<AWSSession>()) { return AWSSessionRecord(cloudSession.cast<AWSSession>(), database); } OS_ASSERT(false); return CloudSessionRecord(std::shared_ptr<detail::CloudSessionRecord_Impl>()); }
std::vector<VagrantSessionRecord> VagrantSessionRecord::getVagrantSessionRecords(ProjectDatabase& database) { std::vector<VagrantSessionRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + CloudSessionRecord::databaseTableName() + " WHERE cloudSessionRecordType=:cloudSessionRecordType")); query.bindValue(":cloudSessionRecordType", CloudSessionRecordType::VagrantSessionRecord); assertExec(query); while (query.next()) { result.push_back(VagrantSessionRecord(query, database)); } return result; }
boost::optional<VagrantSessionRecord> VagrantSessionRecord::getVagrantSessionRecord(int id, ProjectDatabase& database) { boost::optional<VagrantSessionRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + CloudSessionRecord::databaseTableName() + " WHERE cloudSessionRecordType=:cloudSessionRecordType AND id=:id")); query.bindValue(":cloudSessionRecordType", CloudSessionRecordType::VagrantSessionRecord); query.bindValue(":id",id); assertExec(query); if (query.first()) { result = VagrantSessionRecord(query, database); } return result; }
boost::optional<VagrantSessionRecord> VagrantSessionRecord::factoryFromQuery(const QSqlQuery& query, ProjectDatabase& database) { OptionalVagrantSessionRecord result; try { result = VagrantSessionRecord(query,database); } catch (const std::exception& e) { LOG(Error,"Unable to construct VagrantSessionRecord from query, because '" << e.what() << "'."); } return result; }
boost::optional<CloudSessionRecord> CloudSessionRecord::factoryFromQuery(const QSqlQuery& query, ProjectDatabase& database) { OptionalCloudSessionRecord result; int cloudSessionRecordType = query.value(CloudSessionRecordColumns::cloudSessionRecordType).toInt(); switch (cloudSessionRecordType) { case CloudSessionRecordType::VagrantSessionRecord : result = VagrantSessionRecord(query, database).cast<CloudSessionRecord>(); break; case CloudSessionRecordType::AWSSessionRecord : result = AWSSessionRecord(query, database).cast<CloudSessionRecord>(); break; default : LOG(Error,"Unknown CloudSessionRecordType " << cloudSessionRecordType); return boost::none; } return result; }