stones/scripts/utils/check_db.py

107 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Check Database
This script checks the number of records in the database tables.
Usage:
python check_db.py
"""
import os
import sys
from dotenv import load_dotenv
# Add parent directory to path to import utils
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from utils.db_connector import DatabaseConnector
from utils.logger import setup_logger
# Load environment variables
load_dotenv()
# Setup logging
logger = setup_logger("check_db")
def check_db():
"""
Check the number of records in the database tables.
"""
db = DatabaseConnector()
# Check Contact table
query = 'SELECT COUNT(*) as count FROM "Contact"'
result = db.execute_query(query)
contacts_count = result[0]["count"]
logger.info(f"Contacts: {contacts_count:,}")
# Check NftHolding table
query = 'SELECT COUNT(*) as count FROM "NftHolding"'
result = db.execute_query(query)
nft_holdings_count = result[0]["count"]
logger.info(f"NFT Holdings: {nft_holdings_count:,}")
# Check TokenHolding table
query = 'SELECT COUNT(*) as count FROM "TokenHolding"'
result = db.execute_query(query)
token_holdings_count = result[0]["count"]
logger.info(f"Token Holdings: {token_holdings_count:,}")
# Check DaoMembership table
query = 'SELECT COUNT(*) as count FROM "DaoMembership"'
result = db.execute_query(query)
dao_memberships_count = result[0]["count"]
logger.info(f"DAO Memberships: {dao_memberships_count:,}")
# Check Note table
query = 'SELECT COUNT(*) as count FROM "Note"'
result = db.execute_query(query)
notes_count = result[0]["count"]
logger.info(f"Notes: {notes_count:,}")
# Check Tag table
query = 'SELECT COUNT(*) as count FROM "Tag"'
result = db.execute_query(query)
tags_count = result[0]["count"]
logger.info(f"Tags: {tags_count:,}")
# Check TagsOnContacts table
query = 'SELECT COUNT(*) as count FROM "TagsOnContacts"'
result = db.execute_query(query)
tags_on_contacts_count = result[0]["count"]
logger.info(f"Tags on Contacts: {tags_on_contacts_count:,}")
# Check DataSource table
query = 'SELECT COUNT(*) as count FROM "DataSource"'
result = db.execute_query(query)
data_sources_count = result[0]["count"]
logger.info(f"Data Sources: {data_sources_count:,}")
# Check ScrapingJob table
query = 'SELECT COUNT(*) as count FROM "ScrapingJob"'
result = db.execute_query(query)
scraping_jobs_count = result[0]["count"]
logger.info(f"Scraping Jobs: {scraping_jobs_count:,}")
# Check Public Nouns NFT holdings
query = '''
SELECT COUNT(*) as count
FROM "NftHolding"
WHERE "contractAddress" = '0x93ecac71499147627DFEc6d0E494d50fCFFf10EE'
'''
result = db.execute_query(query)
public_nouns_count = result[0]["count"]
logger.info(f"Public Nouns NFT Holdings: {public_nouns_count:,}")
# Check unique holders of Public Nouns NFT
query = '''
SELECT COUNT(DISTINCT "contactId") as count
FROM "NftHolding"
WHERE "contractAddress" = '0x93ecac71499147627DFEc6d0E494d50fCFFf10EE'
'''
result = db.execute_query(query)
unique_holders_count = result[0]["count"]
logger.info(f"Unique Public Nouns NFT Holders: {unique_holders_count:,}")
if __name__ == "__main__":
check_db()