pgadmin3/include/schema/pgForeignKey.h
2025-10-03 14:56:27 +05:00

248 lines
4.5 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgForeignKey.h PostgreSQL ForeignKey
//
//////////////////////////////////////////////////////////////////////////
#ifndef PGFOREIGNKEY_H
#define PGFOREIGNKEY_H
#include "pgIndex.h"
class pgForeignKeyFactory : public pgSchemaObjFactory
{
public:
pgForeignKeyFactory();
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
int GetClosedIconId()
{
return closedId;
}
protected:
int closedId;
};
extern pgForeignKeyFactory foreignKeyFactory;
class pgForeignKey : public pgSchemaObject
{
public:
pgForeignKey(pgSchema *newSchema, const wxString &newName = wxT(""));
~pgForeignKey();
int GetIconId();
wxString GetDefinition(int metatype);
wxString GetFullName();
wxString GetTranslatedMessage(int kindOfMessage) const;
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
wxString GetOnUpdate() const
{
return onUpdate;
}
void iSetOnUpdate(const wxString &s)
{
onUpdate = s;
}
wxString GetOnDelete() const
{
return onDelete;
}
void iSetOnDelete(const wxString &s)
{
onDelete = s;
}
wxString GetFkTable() const
{
return fkTable;
}
void iSetFkTable(const wxString &s)
{
fkTable = s;
}
wxString GetFkSchema() const
{
return fkSchema;
}
void iSetFkSchema(const wxString &s)
{
fkSchema = s;
}
wxString GetReferences() const
{
return references;
}
void iSetReferences(const wxString &s)
{
references = s;
}
wxString GetRefSchema() const
{
return refSchema;
}
void iSetRefSchema(const wxString &s)
{
refSchema = s;
}
wxString GetConkey() const
{
return conkey;
}
void iSetConkey(const wxString &s)
{
conkey = s;
}
wxString GetConfkey() const
{
return confkey;
}
void iSetConfkey(const wxString &s)
{
confkey = s;
}
wxString GetConfdelsetcols() const
{
return confdelsetcols;
}
wxString GetQuotedConfdelsetcols() const
{
return quotedFkDelColumns;
}
void iSetConfdelsetcols(const wxString& s)
{
confdelsetcols = s;
}
bool GetDeferrable() const
{
return deferrable;
}
void iSetDeferrable(const bool b)
{
deferrable = b;
}
bool GetDeferred() const
{
return deferred;
}
void iSetDeferred(const bool b)
{
deferred = b;
}
wxString GetMatch() const
{
return match;
}
void iSetMatch(const wxString &s)
{
match = s;
}
bool GetValid() const
{
return valid;
}
void iSetValid(const bool b)
{
valid = b;
}
bool GetEnforced() const
{
return enforced;
}
void iSetEnforced(const bool b)
{
enforced = b;
}
wxString GetRelTableOidStr() const
{
return NumToStr(relTableOid) + wxT("::oid");
}
OID GetRelTableOid() const
{
return relTableOid;
}
void iSetRelTableOid(const OID d)
{
relTableOid = d;
}
wxString GetFkColumns() const
{
return fkColumns;
}
wxString GetRefColumns() const
{
return refColumns;
}
wxString GetQuotedFkColumns() const
{
return quotedFkColumns;
}
wxString GetQuotedRefColumns() const
{
return quotedRefColumns;
}
wxString GetCoveringIndex() const
{
return coveringIndex;
}
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
wxString GetConstraint();
wxString GetSql(ctlTree *browser);
wxString GetHelpPage(bool forCreate) const
{
return wxT("pg/sql-altertable");
}
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
bool HasStats()
{
return false;
}
bool HasDepends()
{
return true;
}
bool HasReferences()
{
return true;
}
void Validate(frmMain *form);
private:
wxString onUpdate, onDelete, conkey, confkey, confdelsetcols,
fkTable, fkSchema, references, refSchema;
wxString fkColumns, refColumns, quotedFkColumns, quotedRefColumns, coveringIndex, match;
wxString fkDelColumns, quotedFkDelColumns;
bool deferrable, deferred, valid, enforced;
OID relTableOid;
};
class pgForeignKeyCollection : public pgSchemaObjCollection
{
public:
pgForeignKeyCollection(pgaFactory *factory, pgSchema *sch);
wxString GetTranslatedMessage(int kindOfMessage) const;
};
class validateForeignKeyFactory : public contextActionFactory
{
public:
validateForeignKeyFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
};
#endif