albertyw/reaction-pics

View on GitHub
model/csv.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package model

import (
    "bytes"
    _ "embed"
    "encoding/csv"
)

//go:embed data/posts.csv
var prodCSV []byte

//go:embed data/posts_test.csv
var testCSV []byte

// ReadPostsFromCSV reads a CSV file into a list of posts
func ReadPostsFromCSV(csvData []byte) []Post {
    ioReader := bytes.NewReader(csvData)
    reader := csv.NewReader(ioReader)
    var posts []Post
    for {
        row, err := reader.Read()
        if err != nil {
            break
        }
        post := CSVToPost(row)
        posts = append(posts, *post)
    }
    return posts
}

func getCSV(test bool) []byte {
    if test {
        return testCSV
    }
    return prodCSV
}