Changeset View
Changeset View
Standalone View
Standalone View
src/KDbTableOrQuerySchema.cpp
Show First 20 Lines • Show All 104 Lines • ▼ Show 20 Line(s) | 100 | { | |||
---|---|---|---|---|---|
105 | } | 105 | } | ||
106 | } | 106 | } | ||
107 | 107 | | |||
108 | KDbTableOrQuerySchema::~KDbTableOrQuerySchema() | 108 | KDbTableOrQuerySchema::~KDbTableOrQuerySchema() | ||
109 | { | 109 | { | ||
110 | delete d; | 110 | delete d; | ||
111 | } | 111 | } | ||
112 | 112 | | |||
113 | int KDbTableOrQuerySchema::fieldCount() const | 113 | int KDbTableOrQuerySchema::fieldCount(KDbConnection *conn) const | ||
114 | { | 114 | { | ||
115 | if (d->table) | 115 | if (d->table) | ||
116 | return d->table->fieldCount(); | 116 | return d->table->fieldCount(); | ||
117 | if (d->query) | 117 | if (d->query && conn) | ||
118 | return d->query->fieldsExpanded().size(); | 118 | return d->query->fieldsExpanded(conn).size(); | ||
119 | return 0; | 119 | return -1; | ||
120 | } | ||||
121 | | ||||
122 | const KDbQueryColumnInfo::Vector KDbTableOrQuerySchema::columns(KDbConnection * conn, ColumnsMode mode) | ||||
123 | { | ||||
124 | if (d->table) { | ||||
125 | return d->table->query()->fieldsExpanded(conn, mode == ColumnsMode::Unique | ||||
126 | ? KDbQuerySchema::FieldsExpandedMode::Unique | ||||
127 | : KDbQuerySchema::FieldsExpandedMode::Default); | ||||
128 | } | ||||
129 | if (d->query) { | ||||
130 | return d->query->fieldsExpanded(conn, mode == ColumnsMode::Unique | ||||
131 | ? KDbQuerySchema::FieldsExpandedMode::Unique | ||||
132 | : KDbQuerySchema::FieldsExpandedMode::Default); | ||||
120 | } | 133 | } | ||
121 | | ||||
122 | const KDbQueryColumnInfo::Vector KDbTableOrQuerySchema::columns(bool unique) | | |||
123 | { | | |||
124 | if (d->table) | | |||
125 | return d->table->query()->fieldsExpanded(unique ? KDbQuerySchema::Unique : KDbQuerySchema::Default); | | |||
126 | | ||||
127 | if (d->query) | | |||
128 | return d->query->fieldsExpanded(unique ? KDbQuerySchema::Unique : KDbQuerySchema::Default); | | |||
129 | | ||||
130 | kdbWarning() << "no query or table specified!"; | 134 | kdbWarning() << "no query or table specified!"; | ||
131 | return KDbQueryColumnInfo::Vector(); | 135 | return KDbQueryColumnInfo::Vector(); | ||
132 | } | 136 | } | ||
133 | 137 | | |||
134 | QByteArray KDbTableOrQuerySchema::name() const | 138 | QByteArray KDbTableOrQuerySchema::name() const | ||
135 | { | 139 | { | ||
136 | if (d->table) | 140 | if (d->table) | ||
137 | return d->table->name().toLatin1(); | 141 | return d->table->name().toLatin1(); | ||
Show All 15 Lines | 156 | { | |||
153 | if (d->table) | 157 | if (d->table) | ||
154 | return d->table->field(name); | 158 | return d->table->field(name); | ||
155 | if (d->query) | 159 | if (d->query) | ||
156 | return d->query->field(name); | 160 | return d->query->field(name); | ||
157 | 161 | | |||
158 | return nullptr; | 162 | return nullptr; | ||
159 | } | 163 | } | ||
160 | 164 | | |||
161 | KDbQueryColumnInfo* KDbTableOrQuerySchema::columnInfo(const QString& name) | 165 | KDbQueryColumnInfo* KDbTableOrQuerySchema::columnInfo(KDbConnection *conn, const QString& name) | ||
162 | { | 166 | { | ||
163 | if (d->table) | 167 | if (d->table) | ||
164 | return d->table->query()->columnInfo(name); | 168 | return d->table->query()->columnInfo(conn, name); | ||
165 | 169 | | |||
166 | if (d->query) | 170 | if (d->query) | ||
167 | return d->query->columnInfo(name); | 171 | return d->query->columnInfo(conn, name); | ||
168 | 172 | | |||
169 | return nullptr; | 173 | return nullptr; | ||
170 | } | 174 | } | ||
171 | 175 | | |||
172 | //! Sends information about table or query schema @a schema to debug output @a dbg. | 176 | //! Sends information about table or query schema @a schema to debug output @a dbg. | ||
173 | QDebug operator<<(QDebug dbg, const KDbTableOrQuerySchema& schema) | 177 | QDebug operator<<(QDebug dbg, const KDbConnectionAndSchema &connectionAndSchema) | ||
174 | { | 178 | { | ||
175 | if (schema.table()) | 179 | if (std::get<1>(connectionAndSchema).table()) { | ||
176 | dbg.nospace() << *schema.table(); | 180 | dbg.nospace() << *std::get<1>(connectionAndSchema).table(); | ||
177 | else if (schema.query()) | 181 | } else if (std::get<1>(connectionAndSchema).query()) { | ||
178 | dbg.nospace() << *schema.query(); | 182 | dbg.nospace() << KDbConnectionAndQuerySchema(std::get<0>(connectionAndSchema), | ||
179 | return dbg.space(); | 183 | *std::get<1>(connectionAndSchema).query()); | ||
180 | } | 184 | } | ||
181 | 185 | return dbg.space(); | |||
182 | KDbConnection* KDbTableOrQuerySchema::connection() const | | |||
183 | { | | |||
184 | if (d->table) | | |||
185 | return d->table->connection(); | | |||
186 | else if (d->query) | | |||
187 | return d->query->connection(); | | |||
188 | return nullptr; | | |||
189 | } | 186 | } | ||
190 | 187 | | |||
191 | KDbQuerySchema* KDbTableOrQuerySchema::query() const | 188 | KDbQuerySchema* KDbTableOrQuerySchema::query() const | ||
192 | { | 189 | { | ||
193 | return d->query; | 190 | return d->query; | ||
194 | } | 191 | } | ||
195 | 192 | | |||
196 | KDbTableSchema* KDbTableOrQuerySchema::table() const | 193 | KDbTableSchema* KDbTableOrQuerySchema::table() const | ||
197 | { | 194 | { | ||
198 | return d->table; | 195 | return d->table; | ||
199 | } | 196 | } |