initialize and drop database fixed

This commit is contained in:
andrei 2022-04-05 17:51:05 +03:00
parent 5ce84c5a2f
commit f9af464623
5 changed files with 54 additions and 27 deletions

View File

@ -63,7 +63,7 @@ def drop_database(connection, dbname):
raise NotImplementedError raise NotImplementedError
def init_database(connection=None, dbname=None): # FIXME HERE IS INIT DATABASE def init_database(connection=None, dbname=None):
"""Initialize the configured backend for use with Planetmint. """Initialize the configured backend for use with Planetmint.
Creates a database with :attr:`dbname` with any required tables Creates a database with :attr:`dbname` with any required tables

View File

@ -27,9 +27,14 @@ class TarantoolDB:
self.port = port self.port = port
self.db_connect = tarantool.connect(host=host, port=port, user=user, password=password) self.db_connect = tarantool.connect(host=host, port=port, user=user, password=password)
if reset_database: if reset_database:
self._load_setup_files()
self.drop_database() self.drop_database()
self.init_database() self.init_database()
def _load_setup_files(self):
self.drop_commands = self.__read_commands(file_path="drop_db.txt")
self.init_commands = self.__read_commands(file_path="init_db.txt")
def space(self, space_name: str): def space(self, space_name: str):
return self.db_connect.space(space_name) return self.db_connect.space(space_name)
@ -45,15 +50,15 @@ class TarantoolDB:
def drop_database(self): def drop_database(self):
from planetmint.backend.tarantool.utils import run from planetmint.backend.tarantool.utils import run
db_config = Config().get()["database"] db_config = Config().get()["database"]
drop_config = db_config["drop_config"] # drop_config = db_config["drop_config"]
f_path = "%s%s" % (drop_config["relative_path"], drop_config["drop_file"]) # f_path = "%s%s" % (drop_config["relative_path"], drop_config["drop_file"])
commands = self.__read_commands(file_path=f_path) # commands = self.__read_commands(file_path=f_path)
run(commands=commands, config=db_config) run(commands=self.drop_commands, config=db_config)
def init_database(self): def init_database(self):
from planetmint.backend.tarantool.utils import run from planetmint.backend.tarantool.utils import run
db_config = Config().get()["database"] db_config = Config().get()["database"]
init_config = db_config["init_config"] # init_config = db_config["init_config"]
f_path = "%s%s" % (init_config["relative_path"], init_config["init_file"]) # f_path = "%s%s" % (init_config["relative_path"], init_config["init_file"])
commands = self.__read_commands(file_path=f_path) # commands = self.__read_commands(file_path=f_path)
run(commands=commands, config=db_config) run(commands=self.init_commands, config=db_config)

View File

@ -1,3 +1,5 @@
box.cfg{listen = 3301}
abci_chains = box.schema.space.create('abci_chains',{engine = 'memtx' , is_sync = false}) abci_chains = box.schema.space.create('abci_chains',{engine = 'memtx' , is_sync = false})
abci_chains:format({{name='height' , type='integer'},{name='is_synched' , type='boolean'},{name='chain_id',type='string'}}) abci_chains:format({{name='height' , type='integer'},{name='is_synched' , type='boolean'},{name='chain_id',type='string'}})
abci_chains:create_index('id_search' ,{type='hash', parts={'chain_id'}}) abci_chains:create_index('id_search' ,{type='hash', parts={'chain_id'}})
@ -39,7 +41,7 @@ validators:create_index('id_search' , {type='hash' , parts={'validator_id'}})
validators:create_index('height_search' , {type='tree', unique=true, parts={'height'}}) validators:create_index('height_search' , {type='tree', unique=true, parts={'height'}})
transactions = box.schema.space.create('transactions',{engine='memtx' , is_sync=false}) transactions = box.schema.space.create('transactions',{engine='memtx' , is_sync=false})
transactions:format({{name='transaction_id' , type='string'}, {name='operation' , type='string'}, {name='version' ,type='string'}, {name='asset_id', type='string'}}) transactions:format({{name='transaction_id' , type='string'}, {name='operation' , type='string'}, {name='version' ,type='string'}, {name='asset_id', type='string'}, {name='dict_map', type='any'}})
transactions:create_index('id_search' , {type = 'hash' , parts={'transaction_id'}}) transactions:create_index('id_search' , {type = 'hash' , parts={'transaction_id'}})
transactions:create_index('only_asset_search', {type = 'tree', unique=false, parts={'asset_id'}}) transactions:create_index('only_asset_search', {type = 'tree', unique=false, parts={'asset_id'}})
transactions:create_index('asset_search' , {type = 'tree',unique=false, parts={'operation', 'asset_id'}}) transactions:create_index('asset_search' , {type = 'tree',unique=false, parts={'operation', 'asset_id'}})
@ -47,13 +49,13 @@ transactions:create_index('transaction_search' , {type = 'tree',unique=false, pa
transactions:create_index('both_search' , {type = 'tree',unique=false, parts={'asset_id', 'transaction_id'}}) transactions:create_index('both_search' , {type = 'tree',unique=false, parts={'asset_id', 'transaction_id'}})
inputs = box.schema.space.create('inputs') inputs = box.schema.space.create('inputs')
inputs:format({{name='transaction_id' , type='string'}, {name='fulfillment' , type='string'}, {name='owners_before' , type='array'}, {name='fulfills_transaction_id', type = 'string'}, {name='fulfills_output_index', type = 'string'}, {name='input_id', type='string'}}) inputs:format({{name='transaction_id' , type='string'}, {name='fulfillment' , type='any'}, {name='owners_before' , type='array'}, {name='fulfills_transaction_id', type = 'string'}, {name='fulfills_output_index', type = 'string'}, {name='input_id', type='string'}, {name='input_index', type='number'}})
inputs:create_index('delete_search' , {type = 'hash', parts={'input_id'}}) inputs:create_index('delete_search' , {type = 'hash', parts={'input_id'}})
inputs:create_index('spent_search' , {type = 'tree', unique=false, parts={'fulfills_transaction_id', 'fulfills_output_index'}}) inputs:create_index('spent_search' , {type = 'tree', unique=false, parts={'fulfills_transaction_id', 'fulfills_output_index'}})
inputs:create_index('id_search', {type = 'tree', unique=false, parts = {'transaction_id'}}) inputs:create_index('id_search', {type = 'tree', unique=false, parts = {'transaction_id'}})
outputs = box.schema.space.create('outputs') outputs = box.schema.space.create('outputs')
outputs:format({{name='transaction_id' , type='string'}, {name='amount' , type='string'}, {name='uri', type='string'}, {name='details_type', type='string'}, {name='details_public_key', type='string'}, {name = 'output_id', type = 'string'}}) outputs:format({{name='transaction_id' , type='string'}, {name='amount' , type='string'}, {name='uri', type='string'}, {name='details_type', type='string'}, {name='details_public_key', type='any'}, {name = 'output_id', type = 'string'}, {name='treshold', type='any'}, {name='subconditions', type='any'}, {name='output_index', type='number'}})
outputs:create_index('unique_search' ,{type='hash', parts={'output_id'}}) outputs:create_index('unique_search' ,{type='hash', parts={'output_id'}})
outputs:create_index('id_search' ,{type='tree', unique=false, parts={'transaction_id'}}) outputs:create_index('id_search' ,{type='tree', unique=false, parts={'transaction_id'}})
@ -63,3 +65,21 @@ keys:create_index('id_search', {type = 'hash', parts={'id'}})
keys:create_index('keys_search', {type = 'tree', unique=false, parts={'public_key'}}) keys:create_index('keys_search', {type = 'tree', unique=false, parts={'public_key'}})
keys:create_index('txid_search', {type = 'tree', unique=false, parts={'transaction_id'}}) keys:create_index('txid_search', {type = 'tree', unique=false, parts={'transaction_id'}})
keys:create_index('output_search', {type = 'tree', unique=false, parts={'output_id'}}) keys:create_index('output_search', {type = 'tree', unique=false, parts={'output_id'}})
box.schema.user.create('planetmint', {if_not_exists=true, password = 'planet_user'})
box.schema.user.grant('planetmint', 'read, write', 'space', 'abci_chains')
box.schema.user.grant('planetmint', 'read, write', 'space', 'assets')
box.schema.user.grant('planetmint', 'read, write', 'space', 'blocks')
box.schema.user.grant('planetmint', 'read, write', 'space', 'blocks_tx')
box.schema.user.grant('planetmint', 'read, write', 'space', 'elections')
box.schema.user.grant('planetmint', 'read, write', 'space', 'meta_data')
box.schema.user.grant('planetmint', 'read, write', 'space', 'pre_commits')
box.schema.user.grant('planetmint', 'read, write', 'space', 'validators')
box.schema.user.grant('planetmint', 'read, write', 'space', 'transactions')
box.schema.user.grant('planetmint', 'read, write', 'space', 'inputs')
box.schema.user.grant('planetmint', 'read, write', 'space', 'outputs')
box.schema.user.grant('planetmint', 'read, write', 'space', 'keys')
local console = require('console')
console.start()

View File

@ -245,12 +245,12 @@ def run_election_show(args, planet):
def _run_init(): def _run_init():
pass
# bdb = planetmint.Planetmint() # bdb = planetmint.Planetmint()
# schema.init_database(connection=bdb.connection) # schema.init_database(connection=bdb.connection)
from planetmint.backend.connection import Connection
# init_tarantool() conn = Connection()
conn.init_database()
@configure_planetmint @configure_planetmint
@ -268,7 +268,9 @@ def run_drop(args):
if response != 'y': if response != 'y':
return return
# drop_tarantool() from planetmint.backend.connection import Connection
conn = Connection()
conn.drop_database()
def run_recover(b): def run_recover(b):

View File

@ -244,17 +244,17 @@ class Planetmint(object):
transaction = backend.query.get_transaction(self.connection, transaction_id) transaction = backend.query.get_transaction(self.connection, transaction_id)
if transaction: if transaction:
# asset = backend.query.get_asset(self.connection, transaction_id) asset = backend.query.get_asset(self.connection, transaction_id)
# metadata = backend.query.get_metadata(self.connection, [transaction_id]) metadata = backend.query.get_metadata(self.connection, [transaction_id])
# if asset: if asset:
# transaction['asset'] = asset transaction['asset'] = asset
#
# if 'metadata' not in transaction: if 'metadata' not in transaction:
# metadata = metadata[0] if metadata else None metadata = metadata[0] if metadata else None
# if metadata: if metadata:
# metadata = metadata.get('metadata') metadata = metadata.get('metadata')
#
# transaction.update({'metadata': metadata}) transaction.update({'metadata': metadata})
transaction = Transaction.from_dict(transaction) transaction = Transaction.from_dict(transaction)