CloudSettingsRecord CloudSettingsRecord::factoryFromCloudSettings(const CloudSettings& cloudSettings, ProjectDatabase& database) { if (cloudSettings.optionalCast<VagrantSettings>()) { return VagrantSettingsRecord(cloudSettings.cast<VagrantSettings>(), database); } if (cloudSettings.optionalCast<AWSSettings>()) { return AWSSettingsRecord(cloudSettings.cast<AWSSettings>(), database); } OS_ASSERT(false); return CloudSettingsRecord(boost::shared_ptr<detail::CloudSettingsRecord_Impl>()); }
std::vector<AWSSettingsRecord> AWSSettingsRecord::getAWSSettingsRecords(ProjectDatabase& database) { std::vector<AWSSettingsRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + CloudSettingsRecord::databaseTableName() + " WHERE cloudSettingsRecordType=:cloudSettingsRecordType")); query.bindValue(":cloudSettingsRecordType", CloudSettingsRecordType::AWSSettingsRecord); assertExec(query); while (query.next()) { result.push_back(AWSSettingsRecord(query, database)); } return result; }
boost::optional<AWSSettingsRecord> AWSSettingsRecord::factoryFromQuery(const QSqlQuery& query, ProjectDatabase& database) { OptionalAWSSettingsRecord result; try { result = AWSSettingsRecord(query,database); } catch (const std::exception& e) { LOG(Error,"Unable to construct AWSSettingsRecord from query, because '" << e.what() << "'."); } return result; }
boost::optional<AWSSettingsRecord> AWSSettingsRecord::getAWSSettingsRecord(int id, ProjectDatabase& database) { boost::optional<AWSSettingsRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + CloudSettingsRecord::databaseTableName() + " WHERE cloudSettingsRecordType=:cloudSettingsRecordType AND id=:id")); query.bindValue(":cloudSettingsRecordType", CloudSettingsRecordType::AWSSettingsRecord); query.bindValue(":id",id); assertExec(query); if (query.first()) { result = AWSSettingsRecord(query, database); } return result; }
boost::optional<CloudSettingsRecord> CloudSettingsRecord::factoryFromQuery(const QSqlQuery& query, ProjectDatabase& database) { OptionalCloudSettingsRecord result; int cloudSettingsRecordType = query.value(CloudSettingsRecordColumns::cloudSettingsRecordType).toInt(); switch (cloudSettingsRecordType) { case CloudSettingsRecordType::VagrantSettingsRecord : result = VagrantSettingsRecord(query, database).cast<CloudSettingsRecord>(); break; case CloudSettingsRecordType::AWSSettingsRecord : result = AWSSettingsRecord(query, database).cast<AWSSettingsRecord>(); break; default : LOG(Error,"Unknown CloudSettingsRecordType " << cloudSettingsRecordType); return boost::none; } return result; }