117 lines
2.9 KiB
Go
117 lines
2.9 KiB
Go
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
|
|
}
|