#include "foreignkeyvalue.h"
#include "baseadaptor.h"
#include "reference.h"

ForeignKeyValue::ForeignKeyValue(
                    const Reference &ref,
                    const QVariant &constraintValue,
                    const QMap<QString,QVariant> &options)
{
    m_data = new ForeignKeyValueData();
    m_data->m_adaptor = ref.db();
    m_data->m_constraint = ref.target() == constraintValue;
    m_data->m_reference = ref;
    m_data->m_options = options;
}

ForeignKeyValue::ForeignKeyValue(
                    const Reference &ref,
                    const Query &constraint,
                    const QMap<QString,QVariant> &options)
{
    m_data = new ForeignKeyValueData();
    m_data->m_adaptor = ref.db();
    m_data->m_constraint = constraint;
    m_data->m_reference = ref;
    m_data->m_options = options;
}

QString ForeignKeyValue::toString() const
{
    QString result = QLatin1String("(");
    result += m_data->m_adaptor->SELECT(
              QList<Field>() << m_data->m_reference.target().table()->id(),
              m_data->m_constraint,
              m_data->m_options );
    result += QLatin1String(")");
    return result;
}

ForeignKeyValue::operator QVariant() const
{
    return qVariantFromValue( *this );
}

