/*
This file is part of the KDB libraries
Copyright (c) 2000 Praduroux Alessandro <pradu@thekompany.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef KDB_TABLE_H
#define KDB_TABLE_H "$Id: table.h,v 1.4 2001/02/01 03:15:49 garbanzo Exp $"
#include <qstring.h>
#include <qlist.h>
#include <kdb/field.h>
#include <kdb/index.h>
#include <kdb/dataobject.h>
namespace KDB {
class Table;
typedef KSharedPtr<Table> TablePtr;
typedef QValueList<TablePtr> TableList;
typedef QValueListIterator<TablePtr> TableIterator;
class Recordset;
class Connector;
typedef KSharedPtr<Recordset> RecordsetPtr;
/**
* Representation of a database table.
*
* Trough this object we access the fields and
* indices of a given table (when available). This object will allow building of
* new fields and indexes, as well as editing of the table data using
* @ref openRecordset
*
* @author Alessandro Praduroux <pradu@thekompany.com>
* @version kdbcore 0.0.2
*/
class Table :public DataObject {
friend class Database;
Q_OBJECT
public:
~Table();
/**
* creates a new field for the current table.
* If the table is not create()d, the field is appended
* to the list of fields and created with the table itself.
* else no modification will occur. To apply the changes to the
* table, you must use @ref appendField
*/
Field * newField(const QString &name);
/**
* appends the field to the list of fields and issue an
* alter table to the underlying DBMS.
*/
bool appendField(Field *);
/**
* appends the field to the list of fields and issue an
* alter table to the underlying DBMS.
*/
bool removeField(const QString &name);
/**
* changes a field definition and issue an
* alter table to the underlying DBMS.
* the field must be already present in the list of fields
*/
bool changeField(Field *);
/**
* returns an existing field by name, or 0L if the
* field does not exists
*/
Field * getField(const QString &name) const;
/**
* return the list of available fields
*/
FieldList fields() const;
/**
* return the list of names of available fields
*/
QStringList fieldNames() const;
/**
* creates a new index
*
* @param name this is the name of the index
*/
Index * newIndex(const QString &name);
/**
* return an index by name
*/
Index * getIndex(const QString &name) const;
/**
* return the list of available indexes
*/
IndexList indexes() const;
/**
* creates a recordset based on this table.
*/
RecordsetPtr openRecordset();
/**
* actually create the table.
* returns true if the table has been successfully created,
* false otherwise.
*/
bool create();
/**
* returns true if the table is in design mode, i.e. it
* is not created
*/
bool designMode() const;
signals:
void fieldAdded( KDB::Field * );
void fieldRemoved( KDB::Field * );
void changed();
void indexAdded( KDB::Index * );
void indexRemoved( KDB::Index * );
void created( KDB::Table * );
private:
Table(Connector *conn, QObject *parent = 0L, const char *name = 0L, bool design = false);
Connector * connector;
FieldList m_fields;
IndexList m_indexes;
bool m_design;
};
}
#endif
| Generated by: root@powerpc.ports.openbsd.org on Tue Apr 24 23:01:57 2001, using kdoc 2.0a53. |