-
-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathHybridNitroSQLiteSpec.hpp
More file actions
95 lines (81 loc) · 4.28 KB
/
HybridNitroSQLiteSpec.hpp
File metadata and controls
95 lines (81 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
///
/// HybridNitroSQLiteSpec.hpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © 2025 Marc Rousavy @ Margelo
///
#pragma once
#if __has_include(<NitroModules/HybridObject.hpp>)
#include <NitroModules/HybridObject.hpp>
#else
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
#endif
// Forward declaration of `HybridNativeQueryResultSpec` to properly resolve imports.
namespace margelo::nitro::rnnitrosqlite { class HybridNativeQueryResultSpec; }
// Forward declaration of `ArrayBuffer` to properly resolve imports.
namespace NitroModules { class ArrayBuffer; }
// Forward declaration of `SQLiteNullValue` to properly resolve imports.
namespace margelo::nitro::rnnitrosqlite { struct SQLiteNullValue; }
// Forward declaration of `BatchQueryResult` to properly resolve imports.
namespace margelo::nitro::rnnitrosqlite { struct BatchQueryResult; }
// Forward declaration of `NativeBatchQueryCommand` to properly resolve imports.
namespace margelo::nitro::rnnitrosqlite { struct NativeBatchQueryCommand; }
// Forward declaration of `FileLoadResult` to properly resolve imports.
namespace margelo::nitro::rnnitrosqlite { struct FileLoadResult; }
#include <string>
#include <optional>
#include <memory>
#include "HybridNativeQueryResultSpec.hpp"
#include <vector>
#include <variant>
#include <NitroModules/ArrayBuffer.hpp>
#include "SQLiteNullValue.hpp"
#include <NitroModules/Promise.hpp>
#include "BatchQueryResult.hpp"
#include "NativeBatchQueryCommand.hpp"
#include "FileLoadResult.hpp"
namespace margelo::nitro::rnnitrosqlite {
using namespace margelo::nitro;
/**
* An abstract base class for `NitroSQLite`
* Inherit this class to create instances of `HybridNitroSQLiteSpec` in C++.
* You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
* @example
* ```cpp
* class HybridNitroSQLite: public HybridNitroSQLiteSpec {
* public:
* HybridNitroSQLite(...): HybridObject(TAG) { ... }
* // ...
* };
* ```
*/
class HybridNitroSQLiteSpec: public virtual HybridObject {
public:
// Constructor
explicit HybridNitroSQLiteSpec(): HybridObject(TAG) { }
// Destructor
~HybridNitroSQLiteSpec() override = default;
public:
// Properties
public:
// Methods
virtual void open(const std::string& dbName, const std::optional<std::string>& location) = 0;
virtual void close(const std::string& dbName) = 0;
virtual void drop(const std::string& dbName, const std::optional<std::string>& location) = 0;
virtual void attach(const std::string& mainDbName, const std::string& dbNameToAttach, const std::string& alias, const std::optional<std::string>& location) = 0;
virtual void detach(const std::string& mainDbName, const std::string& alias) = 0;
virtual std::shared_ptr<margelo::nitro::rnnitrosqlite::HybridNativeQueryResultSpec> execute(const std::string& dbName, const std::string& query, const std::optional<std::vector<std::variant<std::string, double, bool, std::shared_ptr<ArrayBuffer>, SQLiteNullValue>>>& params) = 0;
virtual std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::rnnitrosqlite::HybridNativeQueryResultSpec>>> executeAsync(const std::string& dbName, const std::string& query, const std::optional<std::vector<std::variant<std::string, double, bool, std::shared_ptr<ArrayBuffer>, SQLiteNullValue>>>& params) = 0;
virtual BatchQueryResult executeBatch(const std::string& dbName, const std::vector<NativeBatchQueryCommand>& commands) = 0;
virtual std::shared_ptr<Promise<BatchQueryResult>> executeBatchAsync(const std::string& dbName, const std::vector<NativeBatchQueryCommand>& commands) = 0;
virtual FileLoadResult loadFile(const std::string& dbName, const std::string& location) = 0;
virtual std::shared_ptr<Promise<FileLoadResult>> loadFileAsync(const std::string& dbName, const std::string& location) = 0;
virtual void loadExtension(const std::string& dbName, const std::string& path, const std::optional<std::string>& entryPoint) = 0;
protected:
// Hybrid Setup
void loadHybridMethods() override;
protected:
// Tag for logging
static constexpr auto TAG = "NitroSQLite";
};
} // namespace margelo::nitro::rnnitrosqlite