Add indirect/enable session methods to SQLite Lua API

This commit is contained in:
Paul Kulchenko 2022-10-12 19:58:32 -07:00
parent 19ffe187ef
commit aa5a9741b1

View file

@ -1864,6 +1864,24 @@ static int lsession_isempty(lua_State *L) {
return 1; return 1;
} }
static int lsession_bool(lua_State *L,
int (*session_func)(sqlite3_session *ses, int val)
) {
lsession *lses = lsqlite_checksession(L, 1);
int val = lua_isboolean(L, 2) ? lua_toboolean(L, 2)
: luaL_optinteger(L, 2, -1);
lua_pushboolean(L, (*session_func)(lses->ses, val));
return 1;
}
static int lsession_indirect(lua_State *L) {
return lsession_bool(L, sqlite3session_indirect);
}
static int lsession_enable(lua_State *L) {
return lsession_bool(L, sqlite3session_enable);
}
static int lsession_changeset(lua_State *L) { static int lsession_changeset(lua_State *L) {
lsession *lses = lsqlite_checksession(L, 1); lsession *lses = lsqlite_checksession(L, 1);
int rc; int rc;
@ -2335,22 +2353,24 @@ static const luaL_Reg ctxlib[] = {
}; };
static const luaL_Reg seslib[] = { static const luaL_Reg seslib[] = {
{"attach", lsession_attach }, {"attach", lsession_attach },
{"changeset", lsession_changeset }, {"changeset", lsession_changeset },
{"isempty", lsession_isempty }, {"isempty", lsession_isempty },
{"delete", lsession_delete }, {"indirect", lsession_indirect },
{"enable", lsession_enable },
{"delete", lsession_delete },
{"__tostring", lsession_tostring }, {"__tostring", lsession_tostring },
{"__gc", lsession_gc }, {"__gc", lsession_gc },
{NULL, NULL} {NULL, NULL}
}; };
static const luaL_Reg reblib[] = { static const luaL_Reg reblib[] = {
{"rebase", lrebaser_rebase }, {"rebase", lrebaser_rebase },
{"delete", lrebaser_delete }, {"delete", lrebaser_delete },
{"__tostring", lrebaser_tostring }, {"__tostring", lrebaser_tostring },
{"__gc", lrebaser_gc }, {"__gc", lrebaser_gc },
{NULL, NULL} {NULL, NULL}
}; };