#ifndef PERSON_H
#define PERSON_H

#include <QObject>
#include <QString>

#include "address.h"

#include <odb/core.hxx>

#pragma db object
class Person : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString firstName READ getFirstName WRITE setFirstName)
    Q_PROPERTY(QString lastName READ getLastName WRITE setLastName)
    Q_PROPERTY(QSharedPointer<QObject> address READ address WRITE setAddress)
public:
    Person();

    int id() const;
    void setId(int value);

    QString getFirstName() const;
    void setFirstName(const QString &value);

    QString getLastName() const;
    void setLastName(const QString &value);

    QSharedPointer<QObject> address() const;
    void setAddress(const QSharedPointer<QObject> &address);

private:
    friend class odb::access;
#pragma db id auto
    int m_id;
    QString firstName;
    QString lastName;
    QSharedPointer<Address> m_address;

};

#endif // PERSON_H
