1
0
go-rss-aggregator/models.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
}