mirror of
https://gitea.invidious.io/iv-org/shard-crystal-sqlite3.git
synced 2024-08-15 00:53:26 +00:00
Simplify flags creation and usage
This commit is contained in:
parent
db48a03797
commit
eb8e4a6962
3 changed files with 22 additions and 14 deletions
|
@ -40,8 +40,7 @@ describe Database do
|
|||
db.execute "create table person (name string, age integer)"
|
||||
db.execute "insert into person values (\"foo\", 10)"
|
||||
in_memory_db = Database.new("file:memdb1?mode=memory&cache=shared",
|
||||
SQLite3::Flag::URI | SQLite3::Flag::CREATE | SQLite3::Flag::READWRITE |
|
||||
SQLite3::Flag::FULLMUTEX)
|
||||
SQLite3.flags(URI, CREATE, READWRITE, FULLMUTEX))
|
||||
source_rows = db.execute "select * from person"
|
||||
|
||||
db.dump(in_memory_db)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
class SQLite3::Database
|
||||
# Creates a new Database object that opens the given file.
|
||||
def initialize(filename)
|
||||
code = LibSQLite3.open_v2(filename, out @db, (SQLite3::Flag::READWRITE | SQLite3::Flag::CREATE), nil)
|
||||
code = LibSQLite3.open_v2(filename, out @db, SQLite3.flags(READWRITE, CREATE), nil)
|
||||
if code != 0
|
||||
raise Exception.new(@db)
|
||||
end
|
||||
|
@ -43,18 +43,19 @@ class SQLite3::Database
|
|||
|
||||
# Dump the database to another SQLite3 instance. This can be used for backing up a SQLite3::Database
|
||||
# to disk or the opposite
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# ```
|
||||
# source_database = SQLite3::Database.new("mydatabase.db")
|
||||
# in_memory_db = SQLite3::Database.new(
|
||||
# "file:memdb1?mode=memory&cache=shared",
|
||||
# LibSQLite3::Flag::URI | LibSQLite3::Flag::CREATE | LibSQLite3::Flag::READWRITE |
|
||||
# LibSQLite3::Flag::FULLMUTEX)
|
||||
# SQLite3.flags(URI, CREATE, READWRITE, FULLMUTEX))
|
||||
# source_database.dump(in_memory_db)
|
||||
# source_database.close()
|
||||
# in_memory_db.exectute { |row|
|
||||
# ...
|
||||
# }
|
||||
# source_database.close
|
||||
# in_memory_db.exectute do |row|
|
||||
# # ...
|
||||
# end
|
||||
# ```
|
||||
def dump(to : SQLite3::Database)
|
||||
backup_item = LibSQLite3.backup_init(to.@db, "main", @db, "main")
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
@[Flags]
|
||||
enum SQLite3::Flag
|
||||
READONLY = 0x00000001 # Ok for sqlite3_open_v2()
|
||||
READWRITE = 0x00000002 # Ok for sqlite3_open_v2()
|
||||
|
@ -20,3 +21,10 @@ enum SQLite3::Flag
|
|||
PRIVATECACHE = 0x00040000 # Ok for sqlite3_open_v2()
|
||||
WAL = 0x00080000 # VFS only
|
||||
end
|
||||
|
||||
module SQLite3
|
||||
# Same as doing SQLite3::Flag.flag(*values)
|
||||
macro flags(*values)
|
||||
::SQLite3::Flag.flags({{*values}})
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue