| 6900 | } |
| 6901 | |
| 6902 | static int lua_to_sqlite(Lua L, sqlite3_context *context) |
| 6903 | { |
| 6904 | if (lua_isnil(L, 1) || luabb_isnull(L, 1)) { |
| 6905 | sqlite3_result_null(context); |
| 6906 | return 0; |
| 6907 | } |
| 6908 | |
| 6909 | all_types_t t; |
| 6910 | dttz_t dt; |
| 6911 | |
| 6912 | switch (luabb_type(L, 1)) { |
| 6913 | case LUA_TBOOLEAN: |
| 6914 | sqlite3_result_int64(context, lua_toboolean(L, 1)); |
| 6915 | break; |
| 6916 | case LUA_TNUMBER: sqlite3_result_double(context, lua_tonumber(L, 1)); break; |
| 6917 | case DBTYPES_REAL: |
| 6918 | sqlite3_result_double(context, luabb_tonumber(L, 1)); |
| 6919 | break; |
| 6920 | case LUA_TSTRING: |
| 6921 | case DBTYPES_CSTRING: |
| 6922 | sqlite3_result_text(context, luabb_tostring(L, 1), -1, |
| 6923 | SQLITE_TRANSIENT); |
| 6924 | break; |
| 6925 | case DBTYPES_INTEGER: |
| 6926 | luabb_tointeger(L, 1, &t.in); |
| 6927 | sqlite3_result_int64(context, t.in); |
| 6928 | break; |
| 6929 | case DBTYPES_BLOB: |
| 6930 | luabb_toblob(L, 1, &t.bl); |
| 6931 | sqlite3_result_blob(context, t.bl.data, t.bl.length, SQLITE_TRANSIENT); |
| 6932 | break; |
| 6933 | case DBTYPES_DATETIME: |
| 6934 | luabb_todatetime(L, 1, &t.dt); |
| 6935 | datetime_t_to_dttz(&t.dt, &dt); |
| 6936 | sqlite3_result_datetime(context, &dt, t.dt.tzname); |
| 6937 | break; |
| 6938 | case DBTYPES_INTERVALDS: |
| 6939 | luabb_tointervalds(L, 1, &t.iv); |
| 6940 | sqlite3_result_interval(context, &t.iv); |
| 6941 | break; |
| 6942 | case DBTYPES_INTERVALYM: |
| 6943 | luabb_tointervalym(L, 1, &t.iv); |
| 6944 | sqlite3_result_interval(context, &t.iv); |
| 6945 | break; |
| 6946 | case DBTYPES_DECIMAL: |
| 6947 | luabb_todecimal(L, 1, &t.dq); |
| 6948 | sqlite3_result_decimal(context, &t.dq); |
| 6949 | break; |
| 6950 | default: |
| 6951 | sqlite3_result_error(context, "can't return that type, yet..", -1); |
| 6952 | return -1; |
| 6953 | } |
| 6954 | return 0; |
| 6955 | } |
| 6956 | |
| 6957 | static int sqlite_to_lua(Lua L, const char *tz, int argc, sqlite3_value **argv) |
| 6958 | { |
no test coverage detected