From 42134d630f1c390a50faa7820236ad7c2b376c90 Mon Sep 17 00:00:00 2001 From: Ed Zynda Date: Sun, 10 Mar 2024 13:36:13 +0300 Subject: [PATCH] Use consola for logging --- bun.lockb | Bin 568523 -> 568547 bytes package.json | 1 + src/lib/utils.ts | 10 ++++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index 66040009bcf1e7f99fe4e62fd0a937bd6204b246..e67e8a2a805b56b378a8b344ec841f87e685c59f 100755 GIT binary patch delta 41460 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 KLVD7WVgC=GI1f<( diff --git a/package.json b/package.json index 80e900f..4e8bec9 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "bits-ui": "^0.9.8", "clsx": "^2.0.0", "cmdk-sv": "^0.0.4", + "consola": "^3.2.3", "drizzle-orm": "^0.29.3", "lucide-svelte": "^0.276.0", "radix-icons-svelte": "^1.2.1", diff --git a/src/lib/utils.ts b/src/lib/utils.ts index b2b66b9..486b6c6 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -2,13 +2,14 @@ import { type ClassValue, clsx } from 'clsx' import { twMerge } from 'tailwind-merge' import { cubicOut } from 'svelte/easing' import type { TransitionConfig } from 'svelte/transition' -import { parseAbi, type Address } from 'viem' +import { type Address } from 'viem' import type { Contract } from './types' import toast from 'svelte-french-toast' import Database from 'bun:sqlite' import { drizzle } from 'drizzle-orm/bun-sqlite' import { contracts } from '../schema' import { and, eq } from 'drizzle-orm' +import consola from 'consola' export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) @@ -70,13 +71,14 @@ export const getContractInformation = async ( const sqlite = new Database('./data/louper.db') const db = drizzle(sqlite) + consola.info('Fetching contract information for', address, 'on chain', chainId) const result = await db .select() .from(contracts) .where(and(eq(contracts.address, address), eq(contracts.chainId, chainId))) if (result.length) { - console.log('Found in db cache!') + consola.info('Found in db cache') return { name: result[0].name, abi: [...JSON.parse(result[0].abi)], @@ -89,7 +91,7 @@ export const getContractInformation = async ( const contractData = await response.json() // Update the database - console.log('Adding to db cache...') + consola.info('Updating db cache') await db.insert(contracts).values({ id: `${chainId}:${address}`, name: contractData.name, @@ -104,7 +106,7 @@ export const getContractInformation = async ( address, } } catch (e) { - console.error(e) + consola.error(e) throw new Error('Contract not found') } }