// Code generated by sqlc. DO NOT EDIT. // source: queries.sql package db import ( "context" "encoding/json" "time" "github.com/google/uuid" ) const authUser = `-- name: AuthUser :one UPDATE users SET token = DEFAULT, token_expires = DEFAULT WHERE username = $2 and (hash = crypt($1, hash)) = true RETURNING user_id, created_at, first_name, last_name, username, email, token, token_expires, true as authed ` type AuthUserParams struct { Crypt string `json:"crypt"` Username string `json:"username"` } type AuthUserRow struct { UserID int64 `json:"user_id"` CreatedAt time.Time `json:"created_at"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Username string `json:"username"` Email string `json:"email"` Token string `json:"token"` TokenExpires time.Time `json:"token_expires"` Authed bool `json:"authed"` } func (q *Queries) AuthUser(ctx context.Context, arg AuthUserParams) (AuthUserRow, error) { row := q.queryRow(ctx, q.authUserStmt, authUser, arg.Crypt, arg.Username) var i AuthUserRow err := row.Scan( &i.UserID, &i.CreatedAt, &i.FirstName, &i.LastName, &i.Username, &i.Email, &i.Token, &i.TokenExpires, &i.Authed, ) return i, err } const createEntry = `-- name: CreateEntry :one INSERT INTO entries ( entry_id, user_id, title, body ) VALUES ( $1, $2, $3, $4 ) RETURNING entry_id, created_at, to_tsvector(body) ` type CreateEntryParams struct { EntryID uuid.UUID `json:"entry_id"` UserID int64 `json:"user_id"` Title string `json:"title"` Body string `json:"body"` } type CreateEntryRow struct { EntryID uuid.UUID `json:"entry_id"` CreatedAt time.Time `json:"created_at"` ToTsvector interface{} `json:"to_tsvector"` } func (q *Queries) CreateEntry(ctx context.Context, arg CreateEntryParams) (CreateEntryRow, error) { row := q.queryRow(ctx, q.createEntryStmt, createEntry, arg.EntryID, arg.UserID, arg.Title, arg.Body, ) var i CreateEntryRow err := row.Scan(&i.EntryID, &i.CreatedAt, &i.ToTsvector) return i, err } const createUser = `-- name: CreateUser :one INSERT INTO users ( first_name, last_name, username, email, hash ) VALUES ( $1, $2, $3, $4, hash($5) ) RETURNING user_id, username, token, token_expires ` type CreateUserParams struct { FirstName string `json:"first_name"` LastName string `json:"last_name"` Username string `json:"username"` Email string `json:"email"` Password string `json:"password"` } type CreateUserRow struct { UserID int64 `json:"user_id"` Username string `json:"username"` Token string `json:"token"` TokenExpires time.Time `json:"token_expires"` } func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error) { row := q.queryRow(ctx, q.createUserStmt, createUser, arg.FirstName, arg.LastName, arg.Username, arg.Email, arg.Password, ) var i CreateUserRow err := row.Scan( &i.UserID, &i.Username, &i.Token, &i.TokenExpires, ) return i, err } const deleteEntry = `-- name: DeleteEntry :execrows DELETE FROM entries WHERE entry_id = $1 ` func (q *Queries) DeleteEntry(ctx context.Context, entryID uuid.UUID) (int64, error) { result, err := q.exec(ctx, q.deleteEntryStmt, deleteEntry, entryID) if err != nil { return 0, err } return result.RowsAffected() } const deleteUser = `-- name: DeleteUser :exec DELETE FROM users CASCADE WHERE user_id = $1 ` func (q *Queries) DeleteUser(ctx context.Context, userID int64) error { _, err := q.exec(ctx, q.deleteUserStmt, deleteUser, userID) return err } const entriesByToken = `-- name: EntriesByToken :many SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries WHERE user_id = (SELECT user_id FROM users WHERE token = $1 limit 1) ` func (q *Queries) EntriesByToken(ctx context.Context, token string) ([]Entry, error) { rows, err := q.query(ctx, q.entriesByTokenStmt, entriesByToken, token) if err != nil { return nil, err } defer rows.Close() var items []Entry for rows.Next() { var i Entry if err := rows.Scan( &i.EntryID, &i.UserID, &i.CreatedAt, &i.UpdatedAt, &i.Title, &i.Body, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getEntries = `-- name: GetEntries :many SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries WHERE user_id = $1 ` func (q *Queries) GetEntries(ctx context.Context, userID int64) ([]Entry, error) { rows, err := q.query(ctx, q.getEntriesStmt, getEntries, userID) if err != nil { return nil, err } defer rows.Close() var items []Entry for rows.Next() { var i Entry if err := rows.Scan( &i.EntryID, &i.UserID, &i.CreatedAt, &i.UpdatedAt, &i.Title, &i.Body, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getEntry = `-- name: GetEntry :one SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries WHERE entry_id = $1 and user_id = $2 LIMIT 1 ` type GetEntryParams struct { EntryID uuid.UUID `json:"entry_id"` UserID int64 `json:"user_id"` } func (q *Queries) GetEntry(ctx context.Context, arg GetEntryParams) (Entry, error) { row := q.queryRow(ctx, q.getEntryStmt, getEntry, arg.EntryID, arg.UserID) var i Entry err := row.Scan( &i.EntryID, &i.UserID, &i.CreatedAt, &i.UpdatedAt, &i.Title, &i.Body, ) return i, err } const getUser = `-- name: GetUser :one SELECT user_id, created_at, updated_at, first_name, last_name, username, hash, email, token, token_expires FROM users WHERE user_id = $1 LIMIT 1 ` func (q *Queries) GetUser(ctx context.Context, userID int64) (User, error) { row := q.queryRow(ctx, q.getUserStmt, getUser, userID) var i User err := row.Scan( &i.UserID, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.Username, &i.Hash, &i.Email, &i.Token, &i.TokenExpires, ) return i, err } const getUserByToken = `-- name: GetUserByToken :one SELECT user_id, created_at, updated_at, first_name, last_name, username, hash, email, token, token_expires FROM users WHERE token = $1 LIMIT 1 ` func (q *Queries) GetUserByToken(ctx context.Context, token string) (User, error) { row := q.queryRow(ctx, q.getUserByTokenStmt, getUserByToken, token) var i User err := row.Scan( &i.UserID, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.Username, &i.Hash, &i.Email, &i.Token, &i.TokenExpires, ) return i, err } const similarEntries = `-- name: SimilarEntries :many SELECT entry_id, similarity(body, $2) as similarity, ts_headline('english', body, q, 'StartSel = , StopSel = ') as headline, title from entries, to_tsquery($2) q WHERE user_id = $1 and similarity(body, $2) > 0.0 and similarity(body, $2) < 1.0 order by similarity DESC LIMIT 10 ` type SimilarEntriesParams struct { UserID int64 `json:"user_id"` Similarity string `json:"similarity"` } type SimilarEntriesRow struct { EntryID uuid.UUID `json:"entry_id"` Similarity float32 `json:"similarity"` Headline json.RawMessage `json:"headline"` Title string `json:"title"` } func (q *Queries) SimilarEntries(ctx context.Context, arg SimilarEntriesParams) ([]SimilarEntriesRow, error) { rows, err := q.query(ctx, q.similarEntriesStmt, similarEntries, arg.UserID, arg.Similarity) if err != nil { return nil, err } defer rows.Close() var items []SimilarEntriesRow for rows.Next() { var i SimilarEntriesRow if err := rows.Scan( &i.EntryID, &i.Similarity, &i.Headline, &i.Title, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const updateEntry = `-- name: UpdateEntry :execrows UPDATE entries SET title = $3, body = $4 WHERE entry_id = $1 and user_id = $2 ` type UpdateEntryParams struct { EntryID uuid.UUID `json:"entry_id"` UserID int64 `json:"user_id"` Title string `json:"title"` Body string `json:"body"` } func (q *Queries) UpdateEntry(ctx context.Context, arg UpdateEntryParams) (int64, error) { result, err := q.exec(ctx, q.updateEntryStmt, updateEntry, arg.EntryID, arg.UserID, arg.Title, arg.Body, ) if err != nil { return 0, err } return result.RowsAffected() } const validToken = `-- name: ValidToken :one SELECT now() < token_created FROM users WHERE token = $1 LIMIT 1 ` func (q *Queries) ValidToken(ctx context.Context, token string) (bool, error) { row := q.queryRow(ctx, q.validTokenStmt, validToken, token) var column_1 bool err := row.Scan(&column_1) return column_1, err }