mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
"""Schema-providing interfaces for backend databases"""
|
|
|
|
from functools import singledispatch
|
|
|
|
import bigchaindb
|
|
from bigchaindb.backend.connection import connect
|
|
|
|
|
|
@singledispatch
|
|
def create_database(connection, dbname):
|
|
"""Create database to be used by BigchainDB
|
|
|
|
Args:
|
|
dbname (str): the name of the database to create.
|
|
|
|
Raises:
|
|
:exc:`~bigchaindb.common.exceptions.DatabaseAlreadyExists`: If the
|
|
given :attr:`dbname` already exists as a database.
|
|
"""
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
@singledispatch
|
|
def create_tables(connection, dbname):
|
|
"""Create the tables to be used by BigchainDB
|
|
|
|
Args:
|
|
dbname (str): the name of the database to create tables for.
|
|
"""
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
@singledispatch
|
|
def create_indexes(connection, dbname):
|
|
"""Create the indexes to be used by BigchainDB
|
|
|
|
Args:
|
|
dbname (str): the name of the database to create indexes for.
|
|
"""
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
@singledispatch
|
|
def drop_database(connection, dbname):
|
|
"""Drop the database used by BigchainDB
|
|
|
|
Args:
|
|
dbname (str): the name of the database to drop.
|
|
|
|
Raises:
|
|
:exc:`~bigchaindb.common.exceptions.DatabaseDoesNotExist`: If the
|
|
given :attr:`dbname` does not exist as a database.
|
|
"""
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
def init_database(connection=None, dbname=None):
|
|
"""Initialize the configured backend for use with BigchainDB.
|
|
|
|
Creates a database with :attr:`dbname` with any required tables
|
|
and supporting indexes.
|
|
|
|
Args:
|
|
connection (:class:`~bigchaindb.backend.connection.Connection`): an
|
|
existing connection to use to initialize the database.
|
|
Creates one if not given.
|
|
dbname (str): the name of the database to create.
|
|
Defaults to the database name given in the BigchainDB
|
|
configuration.
|
|
|
|
Raises:
|
|
:exc:`~bigchaindb.common.exceptions.DatabaseAlreadyExists`: If the
|
|
given :attr:`dbname` already exists as a database.
|
|
"""
|
|
|
|
connection = connection or connect()
|
|
dbname = dbname or bigchaindb.config['database']['name']
|
|
|
|
create_database(connection, dbname)
|
|
create_tables(connection, dbname)
|
|
create_indexes(connection, dbname)
|