orm: use errcode comparisons, instead of strcmp(sqlite3_errmsg,msg)
parent
581603f2bd
commit
d3e676bdc1
|
@ -17,7 +17,6 @@ const (
|
|||
stderr_value = 2
|
||||
)
|
||||
|
||||
fn C.puts(charptr)
|
||||
*/
|
||||
|
||||
fn builtin_init() {
|
||||
|
|
|
@ -43,6 +43,7 @@ fn C.chmod(byteptr, int) int
|
|||
|
||||
fn C.printf(byteptr, ...byteptr) int
|
||||
|
||||
fn C.puts(byteptr) int
|
||||
|
||||
fn C.fputs(byteptr) int
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ fn C.sqlite3_step() int
|
|||
fn C.sqlite3_prepare_v2()
|
||||
fn C.sqlite3_finalize()
|
||||
fn C.sqlite3_column_count(voidptr) int
|
||||
fn C.sqlite3_errstr(int) charptr
|
||||
|
||||
// Opens the connection with a database.
|
||||
pub fn connect(path string) ?DB {
|
||||
|
@ -58,7 +59,10 @@ fn (db DB) init_stmt(query string) &C.sqlite3_stmt {
|
|||
|
||||
// Only for V ORM
|
||||
fn get_int_from_stmt(stmt &C.sqlite3_stmt) int {
|
||||
C.sqlite3_step(stmt)
|
||||
x := C.sqlite3_step(stmt)
|
||||
if x != C.SQLITE_OK && x != C.SQLITE_DONE {
|
||||
C.puts( C.sqlite3_errstr(x) )
|
||||
}
|
||||
res := C.sqlite3_column_int(stmt, 0)
|
||||
C.sqlite3_finalize(stmt)
|
||||
return res
|
||||
|
|
|
@ -88,10 +88,10 @@ fn (mut g Gen) sql_stmt(node ast.SqlStmt) {
|
|||
binds := g.sql_buf.str()
|
||||
g.sql_buf = strings.new_builder(100)
|
||||
g.writeln(binds)
|
||||
g.writeln('sqlite3_step($g.sql_stmt_name);')
|
||||
g.write('if (strcmp(sqlite3_errmsg(${db_name}.conn), "not an error") != 0)')
|
||||
g.write('if (strcmp(sqlite3_errmsg(${db_name}.conn), "no more rows available") != 0) puts(sqlite3_errmsg(${db_name}.conn));')
|
||||
g.writeln('sqlite3_finalize($g.sql_stmt_name);')
|
||||
step_res := g.new_tmp_var()
|
||||
g.writeln('\tint $step_res = sqlite3_step($g.sql_stmt_name);')
|
||||
g.writeln('\tif( ($step_res != SQLITE_OK) && ($step_res != SQLITE_DONE)){ puts(sqlite3_errmsg(${db_name}.conn)); }')
|
||||
g.writeln('\tsqlite3_finalize($g.sql_stmt_name);')
|
||||
}
|
||||
|
||||
fn (mut g Gen) sql_select_expr(node ast.SqlExpr) {
|
||||
|
@ -163,7 +163,9 @@ fn (mut g Gen) sql_select_expr(node ast.SqlExpr) {
|
|||
binds := g.sql_buf.str()
|
||||
g.sql_buf = strings.new_builder(100)
|
||||
g.writeln(binds)
|
||||
g.writeln('if (strcmp(sqlite3_errmsg(${db_name}.conn), "not an error") != 0) puts(sqlite3_errmsg(${db_name}.conn)); ')
|
||||
binding_res := g.new_tmp_var()
|
||||
g.writeln('int $binding_res = sqlite3_extended_errcode(${db_name}.conn);')
|
||||
g.writeln('if ($binding_res != SQLITE_OK) { puts(sqlite3_errmsg(${db_name}.conn)); }')
|
||||
//
|
||||
if node.is_count {
|
||||
g.writeln('$cur_line ${dbtype}__get_int_from_stmt($g.sql_stmt_name);')
|
||||
|
|
Loading…
Reference in New Issue