Class: Swift::Result
- Inherits:
-
Object
- Object
- Swift::Result
- Defined in:
- ext/result.cc
Direct Known Subclasses
Instance Method Summary collapse
-
#clone ⇒ Object
TODO:.
- #columns ⇒ Object
-
#dup ⇒ Object
TODO:.
- #each ⇒ Object
- #fields ⇒ Object
- #finish ⇒ Object
- #insert_id ⇒ Object
- #rows ⇒ Object
Instance Method Details
#clone ⇒ Object
TODO:
52 53 54 |
# File 'ext/result.cc', line 52 static VALUE result_clone(VALUE self) { rb_raise(eSwiftRuntimeError, "clone is not allowed."); } |
#columns ⇒ Object
259 260 261 262 263 264 265 |
# File 'ext/result.cc', line 259
VALUE result_columns(VALUE self) {
dbi::AbstractResult *result = result_handle(self);
try {
return SIZET2NUM(result->columns());
}
CATCH_DBI_EXCEPTIONS();
}
|
#dup ⇒ Object
TODO:
57 58 59 |
# File 'ext/result.cc', line 57 static VALUE result_dup(VALUE self) { rb_raise(eSwiftRuntimeError, "dup is not allowed."); } |
#each ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'ext/result.cc', line 61
VALUE result_each(VALUE self) {
uint64_t length;
const char *data, *tzstring;
dbi::AbstractResult *result = result_handle(self);
VALUE scheme = rb_iv_get(self, "@scheme");
VALUE timezone = rb_iv_get(self, "@timezone");
tzstring = NIL_P(timezone) ? 0 : CSTRING(timezone);
try {
std::vector<string> result_fields = result->fields();
std::vector<int> result_types = result->types();
std::vector<VALUE> fields;
for (uint32_t i = 0; i < result_fields.size(); i++)
fields.push_back(ID2SYM(rb_intern(result_fields[i].c_str())));
result->seek(0);
for (uint32_t row = 0; row < result->rows(); row++) {
VALUE tuple = rb_hash_new();
for (uint32_t column = 0; column < result->columns(); column++) {
data = (const char*)result->read(row, column, &length);
if (data) {
rb_hash_aset(
tuple,
fields[column],
typecast_field(result_types[column], data, length, tzstring)
);
}
else {
rb_hash_aset(tuple, fields[column], Qnil);
}
} // column loop
NIL_P(scheme) ? rb_yield(tuple) : rb_yield(rb_funcall(scheme, fload, 1, tuple));
} // row loop
}
CATCH_DBI_EXCEPTIONS();
return Qnil;
}
|
#fields ⇒ Object
267 268 269 270 271 272 273 274 275 276 277 |
# File 'ext/result.cc', line 267
VALUE result_fields(VALUE self) {
dbi::AbstractResult *result = result_handle(self);
try {
std::vector<string> result_fields = result->fields();
VALUE fields = rb_ary_new();
for (int i = 0; i < result_fields.size(); i++)
rb_ary_push(fields, ID2SYM(rb_intern(result_fields[i].c_str())));
return fields;
}
CATCH_DBI_EXCEPTIONS();
}
|
#finish ⇒ Object
102 103 104 105 106 107 108 |
# File 'ext/result.cc', line 102
static VALUE result_finish(VALUE self) {
dbi::AbstractResult *result = result_handle(self);
try {
result->finish();
}
CATCH_DBI_EXCEPTIONS();
}
|
#insert_id ⇒ Object
242 243 244 245 246 247 248 249 |
# File 'ext/result.cc', line 242
VALUE result_insert_id(VALUE self) {
dbi::AbstractResult *result = result_handle(self);
try {
return SIZET2NUM(result->lastInsertID());
}
CATCH_DBI_EXCEPTIONS();
return Qnil;
}
|
#rows ⇒ Object
251 252 253 254 255 256 257 |
# File 'ext/result.cc', line 251
VALUE result_rows(VALUE self) {
dbi::AbstractResult *result = result_handle(self);
try {
return SIZET2NUM(result->rows());
}
CATCH_DBI_EXCEPTIONS();
}
|