package parser import ( "fmt" "github.com/yourname/reddit-scraper/internal/fetcher" "github.com/yourname/reddit-scraper/internal/types" ) // ParseJSONPost converts a fetcher.JSONPost into a normalized types.Post. // It validates mandatory fields and returns an error if the post should be skipped. func ParseJSONPost(j fetcher.JSONPost) (types.Post, error) { var p types.Post if j.ID == "" { return p, fmt.Errorf("missing id") } if j.Subreddit == "" { return p, fmt.Errorf("missing subreddit") } if j.Title == "" { return p, fmt.Errorf("missing title") } if j.CreatedUTC <= 0 { return p, fmt.Errorf("invalid created_utc") } p.ID = j.ID p.Subreddit = j.Subreddit p.Title = j.Title if j.Author == "" { p.Author = "[deleted]" } else { p.Author = j.Author } p.CreatedUTC = int64(j.CreatedUTC) p.Score = j.Score p.NumComments = j.NumComments p.Content = j.Selftext p.URL = j.URL p.Permalink = j.Permalink return p, nil }