75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/bootdotdev/learn-cicd-starter/internal/database"
|
|
)
|
|
|
|
type User struct {
|
|
ID string `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Name string `json:"name"`
|
|
ApiKey string `json:"api_key"`
|
|
}
|
|
|
|
func databaseUserToUser(user database.User) (User, error) {
|
|
createdAt, err := time.Parse(time.RFC3339, user.CreatedAt)
|
|
if err != nil {
|
|
return User{}, err
|
|
}
|
|
|
|
updatedAt, err := time.Parse(time.RFC3339, user.UpdatedAt)
|
|
if err != nil {
|
|
return User{}, err
|
|
}
|
|
return User{
|
|
ID: user.ID,
|
|
CreatedAt: createdAt,
|
|
UpdatedAt: updatedAt,
|
|
Name: user.Name,
|
|
ApiKey: user.ApiKey,
|
|
}, nil
|
|
}
|
|
|
|
type Note struct {
|
|
ID string `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Note string `json:"note"`
|
|
UserID string `json:"user_id"`
|
|
}
|
|
|
|
func databaseNoteToNote(post database.Note) (Note, error) {
|
|
createdAt, err := time.Parse(time.RFC3339, post.CreatedAt)
|
|
if err != nil {
|
|
return Note{}, err
|
|
}
|
|
|
|
updatedAt, err := time.Parse(time.RFC3339, post.UpdatedAt)
|
|
if err != nil {
|
|
return Note{}, err
|
|
}
|
|
return Note{
|
|
ID: post.ID,
|
|
CreatedAt: createdAt,
|
|
UpdatedAt: updatedAt,
|
|
Note: post.Note,
|
|
UserID: post.UserID,
|
|
}, nil
|
|
}
|
|
|
|
func databasePostsToPosts(notes []database.Note) ([]Note, error) {
|
|
result := make([]Note, len(notes))
|
|
for i, note := range notes {
|
|
var err error
|
|
result[i], err = databaseNoteToNote(note)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
}
|
|
return result, nil
|
|
}
|