107 lines
3.3 KiB
Python
Executable File
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() |