summaryrefslogtreecommitdiffstats
path: root/dom/indexedDB/DBSchema.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/indexedDB/DBSchema.h')
-rw-r--r--dom/indexedDB/DBSchema.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/dom/indexedDB/DBSchema.h b/dom/indexedDB/DBSchema.h
new file mode 100644
index 0000000000..0c0a0d9850
--- /dev/null
+++ b/dom/indexedDB/DBSchema.h
@@ -0,0 +1,46 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef dom_indexeddb_dbschema_h__
+#define dom_indexeddb_dbschema_h__
+
+#include "ErrorList.h"
+
+#include <cstdint>
+
+class mozIStorageConnection;
+
+namespace mozilla::dom::indexedDB {
+
+// Major schema version. Bump for almost everything.
+const uint32_t kMajorSchemaVersion = 26;
+
+// Minor schema version. Should almost always be 0 (maybe bump on release
+// branches if we have to).
+const uint32_t kMinorSchemaVersion = 0;
+
+// The schema version we store in the SQLite database is a (signed) 32-bit
+// integer. The major version is left-shifted 4 bits so the max value is
+// 0xFFFFFFF. The minor version occupies the lower 4 bits and its max is 0xF.
+static_assert(kMajorSchemaVersion <= 0xFFFFFFF,
+ "Major version needs to fit in 28 bits.");
+static_assert(kMinorSchemaVersion <= 0xF,
+ "Minor version needs to fit in 4 bits.");
+
+constexpr int32_t MakeSchemaVersion(uint32_t aMajorSchemaVersion,
+ uint32_t aMinorSchemaVersion) {
+ return int32_t((aMajorSchemaVersion << 4) + aMinorSchemaVersion);
+}
+
+constexpr int32_t kSQLiteSchemaVersion =
+ MakeSchemaVersion(kMajorSchemaVersion, kMinorSchemaVersion);
+
+nsresult CreateFileTables(mozIStorageConnection& aConnection);
+nsresult CreateTables(mozIStorageConnection& aConnection);
+
+} // namespace mozilla::dom::indexedDB
+
+#endif