caching removed
[toast/confclerk.git] / src / mvc / track.cpp
1 /*
2  * activity.cpp
3  *
4  *  Created on: Dec 27, 2009
5  *      Author: Pavol Korinek
6  */
7
8 #include "track.h"
9 #include <QSqlTableModel>
10
11 QString const Track::sTableName = QString("track");
12 int const Track::sTableColCount = 2;
13 const QString Track::NAME = "name";
14
15 QSqlRecord const Track::sColumns = Track::toRecord(QList<QSqlField>()
16     << QSqlField("id", QVariant::Int)
17     << QSqlField(NAME, QVariant::String));
18
19 //QMap<int, Track> Track::mIdToTrack;
20
21 class TrackInsertException : OrmSqlException
22 {
23 public:
24     TrackInsertException(const QString& text) : OrmSqlException(text) {}
25 };
26
27 int Track::insert()
28 {
29     QSqlQuery query;
30     query.prepare("INSERT INTO " + sTableName + " (" + NAME + ")" + " VALUES " + "(\"" + name() + "\")");
31     if (!query.exec())
32     {
33         throw TrackInsertException("Exec Error");
34     }
35     QVariant variant = query.lastInsertId();
36     if (variant.isValid())
37         return variant.toInt();
38     else
39         throw TrackInsertException("Last Insert Id Error");
40 }
41
42 Track Track::retrieveByName(QString name)
43 {
44     QSqlQuery query;
45     query.prepare(
46             selectQuery()
47             + QString("WHERE %1.name = :name").arg(sTableName));
48     query.bindValue(":name", name);
49     return loadOne(query);
50 }
51
52 QList<Track> Track::getAll()
53 {
54     QSqlQuery query;
55     query.prepare(selectQuery());
56     return load(query);
57 }
58
59 Track Track::retrieve(int id)
60 {
61     QSqlQuery query;
62     query.prepare(selectQuery()
63             + QString("WHERE %1.id = :id").arg(sTableName));
64     query.bindValue(":id", id);
65     return loadOne(query);
66 }
67
68 QString Track::retrieveTrackName(int id)
69 {
70     Track track = retrieve(id);
71     return track.name();
72 }