Пример #1
0
func findEntryByID(db *sql.DB, entryID int) (dash.Entry, error) {
	var entry = dash.Entry{
		ID: entryID,
	}
	var err = db.QueryRow(`SELECT
				e.title,
				e.type,
				e.anchor,
				e.body,
				e.body_rendered,
				e.score,
				e.user_id,
				e.removed_from_public,
				e.public,
				u.username
			FROM entries AS e
			INNER JOIN users AS u ON u.id = e.user_id
			WHERE e.id = ?`, entryID,
	).Scan(
		&entry.Title,
		&entry.Type,
		&entry.Anchor,
		&entry.Body,
		&entry.BodyRendered,
		&entry.Score,
		&entry.UserID,
		&entry.RemovedFromPublic,
		&entry.Public,
		&entry.AuthorUsername)
	if err != nil {
		return entry, err
	}

	var rows *sql.Rows
	rows, err = db.Query(`select t.name FROM teams AS t inner join entry_team ON t.id = entry_team.team_id where entry_team.entry_id = ?`, entryID)
	if err != nil {
		return entry, err
	}
	defer rows.Close()
	entry.Teams = make([]string, 0)

	for rows.Next() {
		var teamName string
		if err := rows.Scan(&teamName); err != nil {
			return entry, err
		}
		entry.Teams = append(entry.Teams, teamName)
	}

	return entry, err
}