DediKit Perl API

Для работы с этой библиотекой Вам необходимы базовые знания SQL и принципов связывания таблиц по ключам.
Необходимые библиотеки:

Чтобы включить API для своей панели, поставьте переменную api_enabled в 1 (System settings).

Методы:

select - получает строки таблицы

принимает на входе хеш со значениями:
table - желаемая таблица ( table => 'accounts' )
columns - массив получаемых столбцов ( columns => [ 'id', 'login' ] )
where - смотрите сноску1

возвращает массив хешей, где элементы массива представляют из себя строки получаемой таблицы, а хеши столбцы вида login => 'ftp0'

Пример (получение всех полей id, login из таблицы accounts):
my @result = dedikit::select(table => 'accounts', columns => [ 'id', 'login' ] );

insert - добавляет новую строку в таблицу
принимает на входе хеш со значениями:
table - желаемая таблица ( table => 'accounts' )
columns - ссылка на хеш значений новой строки { login => 'ftp1', passwd => 'PASSWORD' }

возвращает при успехе 1, при неуспехе undef

Пример (добавление шелл-аккаунта ftp1 с паролем PASSWORD):
dedikit::insert(table => 'accounts', columns => { login => 'ftp1', passwd => 'PASSWORD', type => 'shell' } );

update - производит обновление строк таблицы
принимает на входе хеш со значениями:
table - желаемая таблица ( table => 'accounts' )
columns - ссылка на хеш новых значений полей строки ( { login => 'ftp2' } )
where - смотрите сноску1

возвращает при успехе 1, при неуспехе undef

Пример (смена пароля на NEWPASSWORD для аккаунта ftp0):
dedikit::update(table => 'accounts', columns => { passwd => 'NEWPASSWORD' }, where => [ { op => 'EQ', name => 'login', value => 'ftp0' } ] );

delete - производит удаление строк таблицы
принимает на входе хеш со значениями:
table - желаемая таблица ( table => 'accounts' )
where - смотрите сноску1

возвращает при успехе 1, при неуспехе undef

Пример (удаление аккаунта ftp0):
dedikit::delete(table => 'accounts', where => [ { name => 'login', value => 'ftp0' } ] );


1 where - массив условий для select/update/delete.

Пример:
Условие: where login='ftp0'

Как его нужно записывать:

where => [

{ op => 'EQ', name => 'login', value => 'ftp0' }
];

где:
Аналогичные операции: EQ, NE, REGEX
Поддерживаются логические операторы AND, OR.
Группировка условий НЕ ПОДДЕРЖИВАЕТСЯ. Условия обрабатываются от первого к последнему.

Пример записи с использованием логических операторов:
Условие: where login='ftp0' and passwd='test' and id<>10

Как его нужно записывать:

where => [

{ op => 'EQ', name => 'login', value => 'ftp0' },
{ op => 'AND' },
{ op => 'EQ', name => 'passwd', value => 'test' },
{ op => 'AND' },
{ op => 'NE', name => 'id', value => '10' },
];

Вместо оператора LIKE нужно использовать встроенный оператор REGEX - он аналогичен EQ, NE, только вместо условий "равно", "не равно" производится Perl regex matching.

Пример выделения всех поддоменов домена test.com.
Условие: where hosts.name like '%.test.com'

Как его нужно записывать:
where => [

{ op => 'REGEX', name => 'name', value => '^.*\.test\.com$' }
];