const char *q_select_entry = "SELECT id, title, created_at::DATE, updated_at::DATE, body " "FROM entries " "WHERE id = $1;"; const char *q_select_entries = "WITH inner_query AS " "( " " SELECT id, title, created_at, updated_at, body " " FROM entries " " ORDER BY updated_at DESC, created_at DESC " " LIMIT $1 " ") " "SELECT id, title, created_at::DATE, updated_at::DATE, body FROM inner_query;"; const char *q_search_entries = "WITH search_query AS " "( " " SELECT id, title, created_at::DATE, updated_at::DATE, body, " " TS_RANK(search_vector, TO_TSQUERY('english', $1)) AS rank " " FROM entries " " WHERE search_vector @@ TO_TSQUERY('english', $2) " " ORDER BY rank DESC " " LIMIT $3 " ") " "SELECT id, title, created_at::DATE, updated_at::DATE, body FROM search_query;"; const char *q_insert_entry = "INSERT INTO entries (title, body, search_vector) " "VALUES ($1, $2, TO_TSVECTOR('english', $3)) " "RETURNING id;"; const char *q_update_entry = "UPDATE entries " "SET title = $1, body = $2, updated_at = NOW(), search_vector = TO_TSVECTOR('english', $3) " "WHERE id = $4 " "RETURNING id;"; const char *q_delete_entry = "DELETE " "FROM entries " "WHERE id = $1 " "RETURNING id;";