Support adding custom constraints in Edit Table dialog · anandsanto/sqlitebrowser@a9e6fe4 · GitHub
Skip to content

Commit a9e6fe4

Browse files
committed
Support adding custom constraints in Edit Table dialog
This adds support for adding custom constraint in the Edit Table dialog, e.g. for adding multi-column unique constraints.
1 parent 99c7523 commit a9e6fe4

5 files changed

Lines changed: 113 additions & 33 deletions

File tree

‎src/EditTableDialog.cpp‎

Lines changed: 50 additions & 33 deletions

‎src/EditTableDialog.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ private slots:
7373
void setWithoutRowid(bool without_rowid);
7474
void changeSchema(const QString& schema);
7575
void removeConstraint();
76+
void addConstraint(sqlb::Constraint::ConstraintTypes type);
7677

7778
private:
7879
Ui::EditTableDialog* ui;

‎src/EditTableDialog.ui‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,9 @@
300300
<iconset resource="icons/icons.qrc">
301301
<normaloff>:/icons/field_add</normaloff>:/icons/field_add</iconset>
302302
</property>
303+
<property name="popupMode">
304+
<enum>QToolButton::InstantPopup</enum>
305+
</property>
303306
<property name="toolButtonStyle">
304307
<enum>Qt::ToolButtonTextBesideIcon</enum>
305308
</property>
@@ -401,6 +404,46 @@
401404
</widget>
402405
</item>
403406
</layout>
407+
<action name="actionAddPrimaryKey">
408+
<property name="icon">
409+
<iconset resource="icons/icons.qrc">
410+
<normaloff>:/icons/field_key</normaloff>:/icons/field_key</iconset>
411+
</property>
412+
<property name="text">
413+
<string>Primary Key</string>
414+
</property>
415+
<property name="toolTip">
416+
<string>Add a primary key constraint</string>
417+
</property>
418+
</action>
419+
<action name="actionAddForeignKey">
420+
<property name="icon">
421+
<iconset resource="icons/icons.qrc">
422+
<normaloff>:/icons/field_fk</normaloff>:/icons/field_fk</iconset>
423+
</property>
424+
<property name="text">
425+
<string>Foreign Key</string>
426+
</property>
427+
<property name="toolTip">
428+
<string>Add a foreign key constraint</string>
429+
</property>
430+
</action>
431+
<action name="actionAddUniqueConstraint">
432+
<property name="text">
433+
<string>Unique</string>
434+
</property>
435+
<property name="toolTip">
436+
<string>Add a unique constraint</string>
437+
</property>
438+
</action>
439+
<action name="actionAddCheckConstraint">
440+
<property name="text">
441+
<string>Check</string>
442+
</property>
443+
<property name="toolTip">
444+
<string>Add a check constraint</string>
445+
</property>
446+
</action>
404447
</widget>
405448
<customwidgets>
406449
<customwidget>

‎src/sql/sqlitetypes.cpp‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,23 @@ std::string Object::typeToString(Types type)
131131
return "";
132132
}
133133

134+
ConstraintPtr Constraint::makeConstraint(ConstraintTypes type)
135+
{
136+
switch(type)
137+
{
138+
case PrimaryKeyConstraintType:
139+
return sqlb::ConstraintPtr(new sqlb::PrimaryKeyConstraint());
140+
case UniqueConstraintType:
141+
return sqlb::ConstraintPtr(new sqlb::UniqueConstraint());
142+
case ForeignKeyConstraintType:
143+
return sqlb::ConstraintPtr(new sqlb::ForeignKeyClause());
144+
case CheckConstraintType:
145+
return sqlb::ConstraintPtr(new sqlb::CheckConstraint());
146+
default:
147+
return nullptr;
148+
}
149+
}
150+
134151
bool ForeignKeyClause::isSet() const
135152
{
136153
return m_override.size() || m_table.size();

‎src/sql/sqlitetypes.h‎

Lines changed: 2 additions & 0 deletions

0 commit comments

Comments
 (0)