Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func readProductByTitle(db *sql.DB, title string) {
- // read product itself
- product := &Product{}
- rows, err := db.Query(fmt.Sprintf("SELECT * FROM product WHERE title = '%v'", title))
- if err != nil {
- panic(err)
- }
- rows.Next()
- rows.Scan(&product.Id, &product.Category, &product.Title, &product.Cost)
- // read datasheets
- rows.Close()
- datasheets := make([]Datasheet, 0)
- rows, err = db.Query(fmt.Sprintf("SELECT id, title, text, sort FROM datasheet WHERE product = %v ORDER BY sort", product.Id))
- if err != nil {
- panic(err)
- }
- for rows.Next() {
- datasheet := Datasheet{}
- if err := rows.Scan(&datasheet.Id, &datasheet.Title, &datasheet.Text, &datasheet.Sort); err != nil {
- panic(err)
- }
- datasheets = append(datasheets, datasheet)
- }
- product.Datasheets = datasheets
- // read reviews
- rows.Close()
- reviews := make([]Review, 0)
- // FIXME: read "created" timestamp
- rows, err = db.Query(fmt.Sprintf("SELECT r.id, r.author, u.email, r.title, r.text FROM review r JOIN user u ON u.id = r.author WHERE r.product = %v", product.Id))
- defer rows.Close()
- if err != nil {
- panic(err)
- }
- for rows.Next() {
- review := Review{}
- if err := rows.Scan(&review.Id, &review.AuthorId, &review.Author, &review.Title, &review.Text); err != nil {
- panic(err)
- }
- reviews = append(reviews, review)
- }
- product.Reviews = reviews
- log.Printf("ID: %v, category: %v, title: %v, cost: %v", product.Id, product.Category, product.Title, product.Cost)
- printDatasheets(&product.Datasheets)
- printReviews(&product.Reviews)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement