Ignore:
Timestamp:
01/21/10 20:48:46 (12 years ago)
Author:
pavelpa <pavelpa@…>
Branches:
master, qt5
Children:
c718a77
Parents:
30e2bdf
Message:

check for existence of conference before inserting it into DB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sql/sqlengine.cpp

    r30e2bdf r1735f55  
    77
    88#include <QDir>
     9#include <appsettings.h>
    910#include "sqlengine.h"
    1011#include <track.h>
     12#include <conference.h>
    1113
    1214#include <QDebug>
     
    6466    if (db.isValid() && db.isOpen())
    6567    {
    66         QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9', '%10'") \
    67                          .arg(aConference["id"]) \
    68                          .arg(aConference["title"]) \
    69                          .arg(aConference["subtitle"]) \
    70                          .arg(aConference["venue"]) \
    71                          .arg(aConference["city"]) \
    72                          .arg(QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
    73                          .arg(QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
    74                          .arg(aConference["days"]) \
    75                          .arg(-QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))) \
    76                          .arg(-QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));
    77 
    78         QString query = QString("INSERT INTO CONFERENCE (id,title,subtitle,venue,city,start,end,days,day_change,timeslot_duration) VALUES (%1)").arg(values);
    79         QSqlQuery result (query, db);
    80         //LOG_AUTOTEST(query);
     68        int confId = 0;
     69        QList<Conference> confsList = Conference::getAll();
     70        if(confsList.count())
     71        {
     72            QListIterator<Conference> i(confsList);
     73            while (i.hasNext())
     74            {
     75                Conference conf = i.next();
     76                if( aConference["title"] == conf.title() )
     77                {
     78                    confId = conf.id();
     79                    aConference["id"] = QString::number(confId);
     80                    break;
     81                }
     82            }
     83        }
     84
     85        if(!confId) // conference 'aConference' isn't in the table => insert
     86        {
     87            QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9'") \
     88                             .arg(aConference["title"]) \
     89                             .arg(aConference["subtitle"]) \
     90                             .arg(aConference["venue"]) \
     91                             .arg(aConference["city"]) \
     92                             .arg(QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
     93                             .arg(QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
     94                             .arg(aConference["days"]) \
     95                             .arg(-QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))) \
     96                             .arg(-QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));
     97
     98            QString query = QString("INSERT INTO CONFERENCE (title,subtitle,venue,city,start,end,days,day_change,timeslot_duration) VALUES (%1)").arg(values);
     99            QSqlQuery result (query, db);
     100            aConference["id"] = result.lastInsertId().toString(); // 'id' is assigned automatically
     101
     102            if(!AppSettings::confId()) // default conf Id isn't set yet => set it up
     103                AppSettings::setConfId(confId);
     104        }
    81105    }
    82106}
Note: See TracChangeset for help on using the changeset viewer.