@nostr-dev-kit/ndk-mobile
Version:
NDK Mobile
33 lines (28 loc) • 1.1 kB
text/typescript
import { NDKUserProfile } from "@nostr-dev-kit/ndk";
import type { NDKCacheAdapterSqlite, NDKSqliteProfileRecord } from "../../index.js";
/**
* Convenience method to search for profiles in the database.
*/
export function searchProfiles(adapter: NDKCacheAdapterSqlite, query: string): [string, NDKUserProfile][] {
const pubkeys = adapter.db.getAllSync(
"SELECT * FROM profiles WHERE name LIKE ? OR about LIKE ? OR nip05 LIKE ? OR display_name LIKE ?",
[`%${query}%`, `%${query}%`, `%${query}%`, `%${query}%`],
) as NDKSqliteProfileRecord[];
const results: [string, NDKUserProfile][] = [];
for (const row of pubkeys) {
const profile = {
name: row.name,
about: row.about,
picture: row.picture,
banner: row.banner,
nip05: row.nip05,
lud16: row.lud16,
lud06: row.lud06,
displayName: row.display_name,
website: row.website,
created_at: row.created_at,
};
results.push([row.pubkey, profile]);
}
return results;
}