| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include "PictureDao.h"
- #include <QSqlQuery>
- using namespace std;
- PictureDao::PictureDao(QSqlDatabase &database) : mDatabase(database) {}
- void PictureDao::init() const {
- if (!mDatabase.tables().contains("pictures")) {
- QSqlQuery query(mDatabase);
- query.exec(
- "CREATE TABLE pictures(id INTEGER PRIMARY KEY AUTOINCRMENT, album_id "
- "INTEGER, url TEXT)");
- }
- }
- void PictureDao::addPictureInAlbum(int albumId, Picture &picture) const {
- QSqlQuery query(mDatabase);
- query.prepare("INSERT INTO pictures(album_id,url) VALUES(:album_id,:url)");
- query.bindValue(":album_id", albumId);
- query.bindValue(":url", picture.fileUrl().url());
- }
- void PictureDao::removePicture(int id) const {
- QSqlQuery query(mDatabase);
- query.prepare("DELETE FROM pictures WHERE id=:id");
- query.bindValue(":id", id);
- query.exec();
- }
- void PictureDao::removePictureForAlbum(int albumId) const {
- QSqlQuery query(mDatabase);
- query.prepare("DELETE FROM pictures WHERE album_id=:albumId");
- query.bindValue(":albumid", albumId);
- query.exec();
- }
- unique_ptr<vector<unique_ptr<Picture>>> PictureDao::picturesForAlbum(
- int albumId) const {
- QSqlQuery query(mDatabase);
- query.prepare("SELECT * FROM pictures WHERE album_id=:albumId");
- query.bindValue(":albumId", albumId);
- query.exec();
- unique_ptr<vector<unique_ptr<Picture>>> list(new vector<unique_ptr<Picture>>);
- while (query.next()) {
- unique_ptr<Picture> pic(new Picture());
- pic->setFileUrl(query.value("url").toUrl());
- pic->setAlbumId(query.value("album_id").toInt());
- pic->setId(query.value("id").toInt());
- list->push_back(std::move(pic));
- }
- return list;
- }
|