Skip to content

Commit

Permalink
Convert SqlStorage::IngestResult to a JSG_STRUCT.
Browse files Browse the repository at this point in the history
This removes a bunch of boilerplate C++. It does not change the JS
interface.
  • Loading branch information
smerritt committed Apr 30, 2024
1 parent 0cc33b7 commit 86458df
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 37 deletions.
15 changes: 2 additions & 13 deletions src/workerd/api/sql.c++
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jsg::Ref<SqlStorage::Cursor> SqlStorage::exec(jsg::Lock& js, kj::String querySql
return jsg::alloc<Cursor>(*sqlite, regulator, querySql, kj::mv(bindings));
}

jsg::Ref<SqlStorage::IngestResult> SqlStorage::ingest(jsg::Lock& js, kj::String querySql) {
SqlStorage::IngestResult SqlStorage::ingest(jsg::Lock& js, kj::String querySql) {
SqliteDatabase::Regulator& regulator = *this;
auto result = sqlite->ingestSql(regulator, querySql);
return jsg::alloc<IngestResult>(kj::str(result.remainder), result.rowsRead, result.rowsWritten, result.statementCount);
return IngestResult(kj::str(result.remainder), result.rowsRead, result.rowsWritten, result.statementCount);
}

jsg::Ref<SqlStorage::Statement> SqlStorage::prepare(jsg::Lock& js, kj::String query) {
Expand Down Expand Up @@ -296,15 +296,4 @@ void SqlStorage::visitForMemoryInfo(jsg::MemoryTracker& tracker) const {
}
}

SqlStorage::IngestResult::IngestResult(kj::String remainder, uint64_t rowsRead, uint64_t rowsWritten, uint64_t statementCount) :
remainder(kj::mv(remainder)), rowsRead(rowsRead), rowsWritten(rowsWritten), statementCount(statementCount) {}

kj::StringPtr SqlStorage::IngestResult::getRemainder() { return remainder; }

double SqlStorage::IngestResult::getRowsRead() { return rowsRead; }

double SqlStorage::IngestResult::getRowsWritten() { return rowsWritten; }

double SqlStorage::IngestResult::getStatementCount() { return statementCount; }

} // namespace workerd::api
35 changes: 11 additions & 24 deletions src/workerd/api/sql.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ class SqlStorage final: public jsg::Object, private SqliteDatabase::Regulator {

class Cursor;
class Statement;
class IngestResult;
struct IngestResult;

jsg::Ref<Cursor> exec(jsg::Lock& js, kj::String query, jsg::Arguments<BindingValue> bindings);
jsg::Ref<IngestResult> ingest(jsg::Lock& js, kj::String query);
IngestResult ingest(jsg::Lock& js, kj::String query);

jsg::Ref<Statement> prepare(jsg::Lock& js, kj::String query);

Expand Down Expand Up @@ -250,30 +250,17 @@ class SqlStorage::Statement final: public jsg::Object {
friend class Cursor;
};

struct SqlStorage::IngestResult {
IngestResult(kj::String remainder, double rowsRead, double rowsWritten, double statementCount)
: remainder(kj::mv(remainder)), rowsRead(rowsRead), rowsWritten(rowsWritten),
statementCount(statementCount) {}


class SqlStorage::IngestResult final : public jsg::Object {
public:

IngestResult(kj::String remainder, uint64_t rowsRead, uint64_t rowsWritten, uint64_t statementCount);

JSG_RESOURCE_TYPE(IngestResult) {
JSG_READONLY_PROTOTYPE_PROPERTY(statementCount, getStatementCount);
JSG_READONLY_PROTOTYPE_PROPERTY(rowsRead, getRowsRead);
JSG_READONLY_PROTOTYPE_PROPERTY(rowsWritten, getRowsWritten);
JSG_READONLY_PROTOTYPE_PROPERTY(remainder, getRemainder);
}

kj::StringPtr getRemainder();
double getStatementCount();
double getRowsRead();
double getRowsWritten();

private:
kj::String remainder;
uint64_t rowsRead;
uint64_t rowsWritten;
uint64_t statementCount;
double rowsRead;
double rowsWritten;
double statementCount;

JSG_STRUCT(remainder, rowsRead, rowsWritten, statementCount);
};


Expand Down

0 comments on commit 86458df

Please sign in to comment.