module Ouroboros.Consensus.Storage.LeiosDB.Impl.SQLite.Schema
( sql_schema_vol
, sql_schema_imm
) where
sql_schema_vol :: String
sql_schema_vol :: String
sql_schema_vol =
[String] -> String
unlines
( [String] -> [String]
ebsTable
[
String
" missingTxCount INTEGER,"
,
String
" status INTEGER NOT NULL DEFAULT 0,"
]
[String] -> [String] -> [String]
forall a. Semigroup a => a -> a -> a
<> [String]
sharedTables
[String] -> [String] -> [String]
forall a. Semigroup a => a -> a -> a
<> [
String
"CREATE INDEX IF NOT EXISTS idx_ebTxs_txHashBytes ON ebTxs(txHashBytes);"
, String
"CREATE TABLE IF NOT EXISTS ebsMissingTxs ("
, String
" txHashBytes BLOB NOT NULL,"
, String
" ebHashBytes BLOB NOT NULL,"
, String
" PRIMARY KEY (txHashBytes, ebHashBytes)"
, String
");"
, String
"CREATE INDEX IF NOT EXISTS idx_ebsMissingTxs_ebHashBytes ON ebsMissingTxs(ebHashBytes);"
]
)
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
sql_schema_gc
sql_schema_gc :: String
sql_schema_gc :: String
sql_schema_gc =
[String] -> String
unlines
[
String
"CREATE TABLE IF NOT EXISTS gcTxCandidates (txHashBytes BLOB NOT NULL PRIMARY KEY);"
,
String
"CREATE INDEX IF NOT EXISTS idx_ebs_sweepable ON ebs(ebSlot) WHERE status IN (0, 2);"
,
String
"CREATE INDEX IF NOT EXISTS idx_ebs_markedForGc ON ebs(ebHashBytes) WHERE status = 3;"
,
String
"CREATE INDEX IF NOT EXISTS idx_ebs_pinned ON ebs(ebSlot) WHERE status = 1;"
]
sql_schema_imm :: String
sql_schema_imm :: String
sql_schema_imm = [String] -> String
unlines ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ [String] -> [String]
ebsTable [] [String] -> [String] -> [String]
forall a. Semigroup a => a -> a -> a
<> [String]
sharedTables
ebsTable :: [String] -> [String]
ebsTable :: [String] -> [String]
ebsTable [String]
extraColumns =
[ String
"CREATE TABLE IF NOT EXISTS ebs ("
, String
" ebSlot INTEGER NOT NULL,"
, String
" ebHashBytes BLOB NOT NULL,"
, String
" ebBytesSize INTEGER NOT NULL,"
]
[String] -> [String] -> [String]
forall a. Semigroup a => a -> a -> a
<> [String]
extraColumns
[String] -> [String] -> [String]
forall a. Semigroup a => a -> a -> a
<> [ String
" PRIMARY KEY (ebSlot, ebHashBytes)"
, String
");"
,
String
"CREATE INDEX IF NOT EXISTS idx_ebs_ebHashBytes ON ebs(ebHashBytes);"
]
sharedTables :: [String]
sharedTables :: [String]
sharedTables =
[ String
"CREATE TABLE IF NOT EXISTS ebTxs ("
, String
" ebHashBytes BLOB NOT NULL,"
, String
" txOffset INTEGER NOT NULL,"
, String
" txHashBytes BLOB NOT NULL,"
, String
" txBytesSize INTEGER NOT NULL,"
, String
" PRIMARY KEY (ebHashBytes, txOffset)"
, String
");"
, String
"CREATE TABLE IF NOT EXISTS txs ("
, String
" txHashBytes BLOB NOT NULL PRIMARY KEY,"
, String
" txBytes BLOB NOT NULL,"
, String
" txBytesSize INTEGER NOT NULL"
, String
");"
]