Skip to content
File

Blob: src/workerd/api/node/sqlite.h

cpp76 lines
1// Copyright (c) 2017-2022 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4#pragma once
5 
6#include <workerd/jsg/jsg.h>
7 
8#include <kj/common.h>
9 
10namespace workerd::api {
11 
12class Immediate;
13 
14namespace node {
15class SqliteUtil final: public jsg::Object {
16 public:
17 SqliteUtil() = default;
18 SqliteUtil(jsg::Lock&, const jsg::Url&) {}
19 
20 class DatabaseSync final: public jsg::Object {
21 public:
22 DatabaseSync() = default;
23 DatabaseSync(jsg::Lock&, const jsg::Url&) {}
24 
25 // We intentionally do not implement the full API surface yet.
26 // TODO(soon): Add the full implementation of DatabaseSync.
27 static jsg::Ref<DatabaseSync> constructor(jsg::Lock& js) = delete;
28 
29 JSG_RESOURCE_TYPE(DatabaseSync) {}
30 };
31 
32 class StatementSync final: public jsg::Object {
33 public:
34 StatementSync() = default;
35 StatementSync(jsg::Lock&, const jsg::Url&) {}
36 
37 // We intentionally do not implement the full API surface yet.
38 // TODO(soon): Add the full implementation of StatementSync.
39 static jsg::Ref<StatementSync> constructor(jsg::Lock& js) = delete;
40 
41 JSG_RESOURCE_TYPE(StatementSync) {}
42 };
43 
44 void backup(jsg::Lock& js);
45 
46 static constexpr uint8_t SQLITE_CHANGESET_OMIT = 0;
47 static constexpr uint8_t SQLITE_CHANGESET_REPLACE = 1;
48 static constexpr uint8_t SQLITE_CHANGESET_ABORT = 2;
49 static constexpr uint8_t SQLITE_CHANGESET_DATA = 1;
50 static constexpr uint8_t SQLITE_CHANGESET_NOTFOUND = 2;
51 static constexpr uint8_t SQLITE_CHANGESET_CONFLICT = 3;
52 static constexpr uint8_t SQLITE_CHANGESET_CONSTRAINT = 4;
53 static constexpr uint8_t SQLITE_CHANGESET_FOREIGN_KEY = 5;
54 
55 JSG_RESOURCE_TYPE(SqliteUtil) {
56 JSG_NESTED_TYPE(DatabaseSync);
57 JSG_NESTED_TYPE(StatementSync);
58 JSG_METHOD(backup);
59 
60 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_OMIT);
61 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_REPLACE);
62 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_ABORT);
63 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_DATA);
64 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_NOTFOUND);
65 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_CONFLICT);
66 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_CONSTRAINT);
67 JSG_STATIC_CONSTANT(SQLITE_CHANGESET_FOREIGN_KEY);
68 }
69};
70 
71#define EW_NODE_SQLITE_ISOLATE_TYPES \
72 api::node::SqliteUtil, api::node::SqliteUtil::DatabaseSync, api::node::SqliteUtil::StatementSync
73} // namespace node
74 
75} // namespace workerd::api