package main import ( "time" "git.rpuzonas.com/rpuzonas/go-rss-aggregator/internal/database" ) type User struct { ID int64 `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Name string `json:"name"` ApiKey string `json:"api_key"` } type Feed struct { ID int64 `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Name string `json:"name"` Url string `json:"url"` UserID int64 `json:"user_id"` } type FeedFollow struct { ID int64 `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` UserID int64 `json:"user_id"` FeedID int64 `json:"feed_id"` } type Post struct { ID int64 `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Title string `json:"title"` Description *string `json:"description"` PublishedAt time.Time `json:"published_at"` URL string `json:"url"` FeedID int64 `json:"feed_id"` } func databaseUserToUser(dbUser database.User) User { return User{ ID: dbUser.ID, CreatedAt: dbUser.CreatedAt, UpdatedAt: dbUser.UpdatedAt, Name: dbUser.Name, ApiKey: dbUser.ApiKey.String, } } func databaseFeedToFeed(dbFeed database.Feed) Feed { return Feed{ ID: dbFeed.ID, CreatedAt: dbFeed.CreatedAt, UpdatedAt: dbFeed.UpdatedAt, Name: dbFeed.Name, Url: dbFeed.Url, UserID: dbFeed.UserID, } } func databaseFeedsToFeeds(dbFeeds []database.Feed) []Feed { feeds := make([]Feed, len(dbFeeds)) for i, dbFeed := range dbFeeds { feeds[i] = databaseFeedToFeed(dbFeed) } return feeds } func databaseFeedFollowToFeedFollow(dbFeedFollow database.FeedFollow) FeedFollow { return FeedFollow{ ID: dbFeedFollow.ID, CreatedAt: dbFeedFollow.CreatedAt, UpdatedAt: dbFeedFollow.UpdatedAt, UserID: dbFeedFollow.UserID, FeedID: dbFeedFollow.FeedID, } } func databaseFolllowFeedsToFollowFeeds(dbFeedFollows []database.FeedFollow) []FeedFollow { feedFollows := make([]FeedFollow, len(dbFeedFollows)) for i, dbFeedFollow := range dbFeedFollows { feedFollows[i] = databaseFeedFollowToFeedFollow(dbFeedFollow) } return feedFollows } func databasePostToPost(dbPost database.Post) Post { var description *string = nil if dbPost.Description.Valid { description = &dbPost.Description.String } return Post{ ID: dbPost.ID, CreatedAt: dbPost.CreatedAt, UpdatedAt: dbPost.UpdatedAt, Title: dbPost.Title, Description: description, PublishedAt: dbPost.PublishedAt, URL: dbPost.Url, FeedID: dbPost.FeedID, } } func databasePostsToPosts(dbPosts []database.Post) []Post { posts := make([]Post, len(dbPosts)) for i, dbPost := range dbPosts { posts[i] = databasePostToPost(dbPost) } return posts }