import { Selectable } from "kysely";

export interface Profile {
  did: string; // Primary Key, uniquely identifies the profile
  handle: string; // Unique identifier for the user
  displayName?: string; // Optional display name of the user
  description?: string; // Optional description or bio
  avatar?: string; // URL or path to the avatar image
  banner?: string; // URL or path to the banner image
  followersCount?: number; // Count of followers
  followsCount?: number; // Count of accounts the user follows
  postsCount?: number; // Count of posts made by the user
  associated?: string; // JSON serialized representation of ProfileAssociated
  joinedViaStarterPack?: string; // JSON serialized AppBskyGraphDefs.StarterPackViewBasic
  indexedAt?: string; // Timestamp for when the profile was indexed
  createdAt?: string; // Timestamp for when the profile was created
  viewer?: string; // JSON serialized representation of ViewerState
  labels?: string; // JSON serialized array of ComAtprotoLabelDefs.Label
  pinnedPost?: string; // JSON serialized ComAtprotoRepoStrongRef.Main
  extra?: string; // JSON serialized key-value pairs for additional fields
  syncedAt: string; // Timestamp for when the profile was last synced
}

export type ProfileRow = Selectable<Profile>;
