// internal/models/bot.go package models import ( "time" ) // Bot represents a Nostr posting bot type Bot struct { ID int64 `db:"id" json:"id"` Pubkey string `db:"pubkey" json:"pubkey"` EncryptedPrivkey string `db:"encrypted_privkey" json:"encrypted_privkey,omitempty"` Name string `db:"name" json:"name"` DisplayName string `db:"display_name" json:"display_name"` Bio string `db:"bio" json:"bio"` Nip05 string `db:"nip05" json:"nip05"` ZapAddress string `db:"zap_address" json:"zap_address"` ProfilePicture string `db:"profile_picture" json:"profile_picture"` Banner string `db:"banner" json:"banner"` CreatedAt time.Time `db:"created_at" json:"created_at"` OwnerPubkey string `db:"owner_pubkey" json:"owner_pubkey"` // The following are not stored in the database PostConfig *PostConfig `json:"post_config,omitempty"` MediaConfig *MediaConfig `json:"media_config,omitempty"` Relays []*Relay `json:"relays,omitempty"` } // PostConfig represents the posting configuration for a bot type PostConfig struct { ID int64 `db:"id" json:"id"` BotID int64 `db:"bot_id" json:"-"` Hashtags string `db:"hashtags" json:"hashtags"` // JSON array stored as string IntervalMinutes int `db:"interval_minutes" json:"interval_minutes"` PostTemplate string `db:"post_template" json:"post_template"` Enabled bool `db:"enabled" json:"enabled"` } // MediaConfig represents the media upload configuration for a bot type MediaConfig struct { ID int64 `db:"id" json:"id"` BotID int64 `db:"bot_id" json:"-"` PrimaryService string `db:"primary_service" json:"primary_service"` // "nip94" or "blossom" FallbackService string `db:"fallback_service" json:"fallback_service"` Nip94ServerURL string `db:"nip94_server_url" json:"nip94_server_url"` BlossomServerURL string `db:"blossom_server_url" json:"blossom_server_url"` } // Relay represents a Nostr relay configuration type Relay struct { ID int64 `db:"id" json:"id"` BotID int64 `db:"bot_id" json:"-"` URL string `db:"url" json:"url"` Read bool `db:"read" json:"read"` Write bool `db:"write" json:"write"` } // Post represents a post made by the bot type Post struct { ID int64 `db:"id" json:"id"` BotID int64 `db:"bot_id" json:"bot_id"` ContentFilename string `db:"content_filename" json:"content_filename"` MediaURL string `db:"media_url" json:"media_url"` EventID string `db:"event_id" json:"event_id"` Status string `db:"status" json:"status"` // "pending", "posted", "failed" CreatedAt time.Time `db:"created_at" json:"created_at"` Error string `db:"error" json:"error,omitempty"` }