|
|
@@ -2,14 +2,59 @@
|
|
|
|
|
|
#include <QSqlDatabase>
|
|
|
#include <QSqlQuery>
|
|
|
+#include <QVariant>
|
|
|
+#include <QVector>
|
|
|
|
|
|
-AlbumDao::AlbumDao(QSqlDatabase &database) : mDatabase(database) {}
|
|
|
+using namespace std;
|
|
|
|
|
|
+AlbumDao::AlbumDao(QSqlDatabase& database) : mDatabase(database) {}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief AlbumDao::init 初始化
|
|
|
+ */
|
|
|
void AlbumDao::init() const {
|
|
|
- const QStringList tables = mDatabase.tables();
|
|
|
- if (!tables.contains("albums")) {
|
|
|
+ if (!mDatabase.tables().contains("albums")) {
|
|
|
QSqlQuery query(mDatabase);
|
|
|
query.exec(
|
|
|
"CREATE TABLE albums(id INTEGER PRIMARY KEY AUTOINCRMENT, name TEXT)");
|
|
|
}
|
|
|
}
|
|
|
+/**
|
|
|
+ * @brief AlbumDao::addAlbum 新增
|
|
|
+ * @param album
|
|
|
+ */
|
|
|
+void AlbumDao::addAlbum(Album& album) const {
|
|
|
+ QSqlQuery query(mDatabase);
|
|
|
+ query.prepare("INSERT INTO albums(name) VALUES(:name)");
|
|
|
+ query.bindValue(":name", album.name());
|
|
|
+ query.exec();
|
|
|
+ album.setId(query.lastInsertId().toInt());
|
|
|
+}
|
|
|
+
|
|
|
+void AlbumDao::updateAlbum(const Album& album) const {
|
|
|
+ QSqlQuery query(mDatabase);
|
|
|
+ query.prepare("UPDATE albums SET name=:name WHERE id=:id");
|
|
|
+ query.bindValue(":name", album.name());
|
|
|
+ query.bindValue(":id", album.id());
|
|
|
+ query.exec();
|
|
|
+}
|
|
|
+
|
|
|
+void AlbumDao::removeAlbum(int id) const {
|
|
|
+ QSqlQuery query(mDatabase);
|
|
|
+ query.prepare("DELETE FROM albums WHERE id=:id");
|
|
|
+ query.bindValue(":id", id);
|
|
|
+ query.exec();
|
|
|
+}
|
|
|
+
|
|
|
+unique_ptr<vector<unique_ptr<Album>>> AlbumDao::albums() const {
|
|
|
+ QSqlQuery query("SELECT * FROM albums", mDatabase);
|
|
|
+ query.exec();
|
|
|
+ unique_ptr<vector<unique_ptr<Album>>> list(new vector<unique_ptr<Album>>);
|
|
|
+ while (query.next()) {
|
|
|
+ unique_ptr<Album> album(new Album());
|
|
|
+ album->setId(query.value("id").toInt());
|
|
|
+ album->setName(query.value("name").toString());
|
|
|
+ list->push_back(std::move(album));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+}
|