Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop schema on models change #19

Merged
merged 1 commit into from
Apr 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/demo_quipuswap/handlers/on_fa12_divest_liquidity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from decimal import Decimal

import demo_quipuswap.models as models
from demo_quipuswap.types.fa12_token.parameter.transfer import Transfer
from demo_quipuswap.types.quipu_fa12.parameter.divest_liquidity import DivestLiquidity
Expand All @@ -22,4 +23,4 @@ async def on_fa12_divest_liquidity(
transaction = next(op for op in ctx.operations if op.amount)
position.tez_qty -= Decimal(transaction.amount) / (10 ** 6) # type: ignore
position.token_qty -= Decimal(transfer.parameter.value) / (10 ** decimals)
await position.save()
await position.save()
3 changes: 2 additions & 1 deletion src/demo_quipuswap/handlers/on_fa12_invest_liquidity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from decimal import Decimal

import demo_quipuswap.models as models
from demo_quipuswap.types.fa12_token.parameter.transfer import Transfer
from demo_quipuswap.types.quipu_fa12.parameter.invest_liquidity import InvestLiquidity
Expand All @@ -21,4 +22,4 @@ async def on_fa12_invest_liquidity(

position.tez_qty += Decimal(invest_liquidity.data.amount) / (10 ** 6) # type: ignore
position.token_qty += Decimal(transfer.parameter.value) / (10 ** decimals)
await position.save()
await position.save()
3 changes: 2 additions & 1 deletion src/demo_quipuswap/handlers/on_fa20_divest_liquidity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from decimal import Decimal

import demo_quipuswap.models as models
from demo_quipuswap.types.fa2_token.parameter.transfer import Transfer
from demo_quipuswap.types.quipu_fa2.parameter.divest_liquidity import DivestLiquidity
Expand All @@ -22,4 +23,4 @@ async def on_fa20_divest_liquidity(
transaction = next(op for op in ctx.operations if op.amount)
position.tez_qty -= Decimal(transaction.amount) / (10 ** 6) # type: ignore
position.token_qty -= Decimal(transfer.parameter.__root__[0].txs[0].amount) / (10 ** decimals)
await position.save()
await position.save()
3 changes: 2 additions & 1 deletion src/demo_quipuswap/handlers/on_fa20_invest_liquidity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from decimal import Decimal

import demo_quipuswap.models as models
from demo_quipuswap.types.fa2_token.parameter.transfer import Transfer
from demo_quipuswap.types.quipu_fa2.parameter.invest_liquidity import InvestLiquidity
Expand All @@ -21,4 +22,4 @@ async def on_fa20_invest_liquidity(

position.tez_qty += Decimal(invest_liquidity.data.amount) / (10 ** 6) # type: ignore
position.token_qty += Decimal(transfer.parameter.__root__[0].txs[0].amount) / (10 ** decimals)
await position.save()
await position.save()
38 changes: 19 additions & 19 deletions src/dipdup/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,25 +79,25 @@ async def run(ctx) -> None:
},
)

for connection_name, connection in Tortoise._connections.items():
schema_sql = get_schema_sql(connection, False)
schema_hash = hashlib.sha256(schema_sql.encode()).hexdigest()

try:
schema_state = await State.get_or_none(index_type=IndexType.schema, index_name=connection_name)
except OperationalError:
schema_state = None

if schema_state is None:
await Tortoise.generate_schemas()
schema_state = State(index_type=IndexType.schema, index_name=connection_name, hash=schema_hash)
await schema_state.save()
elif schema_state.hash != schema_hash:
pass
# FIXME: Hash mismatch every time
# _logger.warning('Schema hash mismatch, consider reindexing')
# await Tortoise._drop_databases()
# os.execl(sys.executable, sys.executable, *sys.argv)
connection_name, connection = next(iter(Tortoise._connections.items()))
schema_sql = get_schema_sql(connection, False)
# NOTE: Column order could differ in two generated schemas for the same models, drop commas and sort strings to eliminate this
processed_schema_sql = '\n'.join(sorted(schema_sql.replace(',', '').split('\n'))).encode()
schema_hash = hashlib.sha256(processed_schema_sql).hexdigest()

try:
schema_state = await State.get_or_none(index_type=IndexType.schema, index_name=connection_name)
except OperationalError:
schema_state = None

if schema_state is None:
await Tortoise.generate_schemas()
schema_state = State(index_type=IndexType.schema, index_name=connection_name, hash=schema_hash)
await schema_state.save()
elif schema_state.hash != schema_hash:
_logger.warning('Schema hash mismatch, reindexing')
await Tortoise._drop_databases()
os.execl(sys.executable, sys.executable, *sys.argv)

await config.initialize()

Expand Down