mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2024-11-10 12:29:49 +03:00
Merge commit '655f6c2292fe806a06d2607c5606a5a382861f92' into checkpoint/main_from_release_1.7.0_655f6c2292fe806a06d2607c5606a5a382861f92
This commit is contained in:
commit
3fe53a7acf
@ -46,6 +46,8 @@ class NotificationStore:
|
||||
"CREATE TABLE IF NOT EXISTS notifications(" "coin_id blob PRIMARY KEY," "msg blob," "amount blob" ")"
|
||||
)
|
||||
|
||||
await conn.execute("CREATE TABLE IF NOT EXISTS all_notification_ids(coin_id blob PRIMARY KEY)")
|
||||
|
||||
try:
|
||||
await conn.execute("ALTER TABLE notifications ADD COLUMN height bigint DEFAULT 0")
|
||||
except sqlite3.OperationalError as e:
|
||||
@ -74,6 +76,10 @@ class NotificationStore:
|
||||
notification.height,
|
||||
),
|
||||
)
|
||||
cursor = await conn.execute(
|
||||
"INSERT OR REPLACE INTO all_notification_ids (coin_id) VALUES(?)",
|
||||
(notification.coin_id,),
|
||||
)
|
||||
await cursor.close()
|
||||
|
||||
async def get_notifications(self, coin_ids: List[bytes32]) -> List[Notification]:
|
||||
@ -155,7 +161,9 @@ class NotificationStore:
|
||||
|
||||
async def notification_exists(self, id: bytes32) -> bool:
|
||||
async with self.db_wrapper.reader_no_transaction() as conn:
|
||||
async with conn.execute("SELECT EXISTS (SELECT 1 from notifications WHERE coin_id=?)", (id,)) as cursor:
|
||||
async with conn.execute(
|
||||
"SELECT EXISTS (SELECT 1 from all_notification_ids WHERE coin_id=?)", (id,)
|
||||
) as cursor:
|
||||
row = await cursor.fetchone()
|
||||
assert row is not None
|
||||
exists: bool = row[0] > 0
|
||||
|
@ -97,6 +97,16 @@ async def test_notifications(self_hostname: str, two_wallet_nodes: Any, trusted:
|
||||
notification_manager_1 = wsm_1.notification_manager
|
||||
notification_manager_2 = wsm_2.notification_manager
|
||||
|
||||
func = notification_manager_2.potentially_add_new_notification
|
||||
notification_manager_2.most_recent_args = tuple()
|
||||
|
||||
async def track_coin_state(*args: Any) -> bool:
|
||||
notification_manager_2.most_recent_args = args
|
||||
result: bool = await func(*args)
|
||||
return result
|
||||
|
||||
notification_manager_2.potentially_add_new_notification = track_coin_state
|
||||
|
||||
for case in ("block all", "block too low", "allow", "allow_larger", "block_too_large"):
|
||||
msg: bytes = bytes(case, "utf8")
|
||||
if case == "block all":
|
||||
@ -165,3 +175,7 @@ async def test_notifications(self_hostname: str, two_wallet_nodes: Any, trusted:
|
||||
await notification_manager_2.notification_store.add_notification(notifications[0])
|
||||
await notification_manager_2.notification_store.delete_notifications([n.coin_id for n in notifications])
|
||||
assert len(await notification_manager_2.notification_store.get_all_notifications()) == 0
|
||||
|
||||
assert not await func(*notification_manager_2.most_recent_args)
|
||||
await notification_manager_2.notification_store.delete_all_notifications()
|
||||
assert not await func(*notification_manager_2.most_recent_args)
|
||||
|
Loading…
Reference in New Issue
Block a user