Class isp api::TableIdListAction

Материал из ISPWiki
Перейти к: навигация, поиск

Шаблон класса isp_api::TableIdListAction

Класс для работы с таблицами баз данных как со списками

#include <dbaction.h> 

Описание:

template <classTableTable> class isp_api::TableIdListAction

Реализует функции для отображения и редактирования данных таблицы В случае создания новой записи, в теге <id> автоматически возвращается ее номер

Аргументы:
[Table] класс - таблица, унаследованный от mgr_db::IdTable
See also: mgr_db::IdTable
See also: TableNameListAction
See also: StdListAction

 // в простейшем варианте вы можете просто создать экземляр класса 
 //new TableIdListAction<MyTable>("table_iterface", MinLevel(lvAmin), cache); 
 // созданный Action "table_interface" позволит просматривать и редактировать 
 // записи в таблице MyTable. При этом будет контролировать доступ к полям 
 // MyTable согласно настрокам заданным в её контрукторе 
 
class ActionChanges : public TableIdListAction<TChanges> { 
public: 
    ActionChanges() : TableIdListAction<TChanges>("changes", MinLevel(lvRegistered), *cache.get()) { 
    m_qlist = cache->Prepare("SELECT changes.id, changes.type, changes.dist, changes.name FROM changes WHERE release=?"); 
        m_msg_get = cache->Prepare("SELECT data FROM msg WHERE changes=? AND langs=?"); 
 } 
 
    virtual string TableList(Session &ses, const string &name) const { 
        return "SELECT * FROM changes WHERE release=" + ses.Param("plid"); 
    } 
 
    virtual void TableFormTune(Session &ses, Cursor &) const { 
        ses.NewSelect("type"); 
        ses.AddChildNode("msg", "bugfix"); 
        ses.AddChildNode("msg", "change"); 
        ses.AddChildNode("msg", "feature"); 
    } 
 
    virtual void TableGet(Session &ses, Cursor &table) const { 
        string id = table->Id.AsString(); 
        string tmp = *m_msg_get.Execute(id, 1); 
        ses.NewNode("src_desc", tmp); 
        tmp = *m_msg_get.Execute(id, 2); 
        ses.NewNode("dst_desc", tmp); 
    } 
 
    virtual void TableSet(Session &ses, Cursor &table) const { 
        string plid = ses.Param("plid"); 
        table->Release = plid; 
        table->Post(); 
    } 
private: 
 mgr_db::Stmt m_qlist; 
 mgr_db::Stmt m_msg_get; 
} 
 
MODULE_INIT(changes, "") { 
    new ActionChanges(); 
} 

Родители:


Потомки:


Открытые типы (кратко)

typedef std::shared_ptr<Table> Cursor

Открытые члены (кратко)

virtual void TableFormTune ( Session &ses , Cursor &table )

Настройка формы


virtual void TableGet ( Session &ses , Cursor &table )

Получение данных


virtual void TableDefaults ( Session &ses )

Полчуние значений "по умолчанию".


virtual void TableSet ( Session &ses , Cursor &table )

Запись данных


virtual void TableBeforeDelete ( Session &ses , Cursor &table )

Вызывается перед удалением записи


virtual void TableAfterDelete ( Session &ses , Cursor &table )

Вызывается после удаления записи


virtual string TableList ( Session &ses , const string &table_name )

Получить запрос для построения списка


virtual bool FindAndCheck ( Session &ses , Cursor &table , const string &elid )

Установить курсор и, если запись найдена, проверить доступ


virtual bool Find ( Session &ses , Cursor &table , const string &elid )

установить курсор на выбранную запись


virtual string KeyValue ( Cursor &table )

Получить id записи


virtual void List ( Session &ses )
virtual void Get ( Session &ses , const string &elid )

Аналог метода класса FormAction::Get()


virtual void Set ( Session &ses , const string &elid )

Аналог метода класса FormAction::Set()


virtual void New ( Session &ses )

Аналог метода класса FormAction::New()


virtual void Del ( Session &ses , const string &elid )

Вызывается при удалении элемента из списка


virtual Cursor GetCursor () const

Получить курсор из кэша

Методы

virtual void TableFormTune ( Session &ses , Cursor &table )

Данная функция/метод является inline функцией

Настройка формы

Вызывается, когда приходит запрос на редактирование/создание новой записи, после вызова TableGet или TableDefaults и вызова DbTuneForm

Аргументы:
[table] курсор установленный на редактируюмую запись. Eof() если это создание новой записи
See also: DbTuneForm

virtual void TableGet ( Session &ses , Cursor &table )

Данная функция/метод является inline функцией

Получение данных

Вызывается когда приходит запрос на редактирование записи, после вызова DbGetProps

Аргументы:
[table] курсор установленный на редактируюмую запись
See also: DbGetProps

virtual void TableDefaults ( Session &ses )

Данная функция/метод является inline функцией

Полчуние значений "по умолчанию".

Вызывается когда приходит запрос на добавление новой записи

virtual void TableSet ( Session &ses , Cursor &table )

Данная функция/метод является inline функцией

Запись данных

Вызывается, когда приходит сохранение отредактированной/добавленной записи, после вызова DbSetProps. Метод Post для курсора table будет вызван после завершения этого метода. Поэтому нет необходимости вызывать этот метод вручную.

Warning: Вам все же может потребоваться вызвать Post вручную, если необходимо добавить дополнительные записи ссылающиеся на эту
Аргументы:
[table] курсор установленный на редактируюмую или новую запись
See also: DbSetProps

virtual void TableBeforeDelete ( Session &ses , Cursor &table )

Данная функция/метод является inline функцией

Вызывается перед удалением записи

Аргументы:
[table] курсор установленный на удаляемую запись

virtual void TableAfterDelete ( Session &ses , Cursor &table )

Данная функция/метод является inline функцией

Вызывается после удаления записи

К моменту вызова этого метода запрос на удаление уже выполнен. Но данные в курсоре еще доступны

Аргументы:
[table] курсор установленный на удаленную запись

virtual string TableList ( Session &ses , const string &table_name )

Получить запрос для построения списка

По умолчанию - запрос возвращающий все данные из таблицы table_name

Аргументы:
[table_name] имя таблицы Table

virtual bool FindAndCheck ( Session &ses , Cursor &table , const string &elid )

Установить курсор и, если запись найдена, проверить доступ

Вызывается при просмотре, редактировании и удалении записи. Для проверки доступа к записи будет вызван виртуальный метод CustomTable::CheckAccess, которому в качестве параметров будут переданы ses.auth.level() и ses.auth.ext("id") Если среди расширенных параметров авторизации не будет поля id или значение этого параметра окажется пустым, то будет использовано имя пользователя - ses.auth.name()

Аргументы:
[table] курсор
[elid] идетификатор записи
Returned: true если элемент найден и доступен
See also: Find

virtual bool Find ( Session &ses , Cursor &table , const string &elid )

установить курсор на выбранную запись

По умолчанию вызывает метод Find курсора table. Вызывается из метода FindAndCheck. Если вы переопределяете метод Find, следует переопределить и KeyValue.

Аргументы:
[table] курсор
[elid] идетификатор записи
Returned: true если элемент найден
See also: FinAndCheck
See also: KeyValue

virtual string KeyValue ( Cursor &table )

Получить id записи

Если вы переопределяете метод KeyValue, следует переопределить и Find.

Аргументы:
[table] курсор установленный на запись
Returned: значение, которое используется для поиска записи при редактровании и удалении
See also: Find

virtual void List ( Session &ses )

виртуальные методы базового класса

virtual void Get ( Session &ses , const string &elid )

Аналог метода класса FormAction::Get()

See also: FormAction::Get
Аргументы:
[inout] - ses Текущая сессия
See also: isp_api::Session
Аргументы:
[in] - elid Идентификатор редактируемого элемента (или пустая строка, если элемент - новый)

virtual void Set ( Session &ses , const string &elid )

Аналог метода класса FormAction::Set()

See also: FormAction::Set
Аргументы:
[inout] - ses Текущая сессия
See also: isp_api::Session
Аргументы:
[in] - elid Идентификатор редактируемого элемента (или пустая строка, если элемент - новый)

virtual void New ( Session &ses )

Аналог метода класса FormAction::New()

See also: FormAction::New
Аргументы:
[inout] - ses Текущая сессия
See also: isp_api::Session

virtual void Del ( Session &ses , const string &elid )

Вызывается при удалении элемента из списка

Аргументы:
[inout] - ses Текущая сессия
See also: isp_api::Session
Аргументы:
[in] - elid Идентификатор удаляемого элемента; если удаляемых элементов несколько, то производится вызов данного метода для каждого из элементов отдельно

virtual Cursor GetCursor () const

Получить курсор из кэша

Типы

typedef std::shared_ptr<Table> Cursor