Moved contents of seasoned_api up to root folder
This commit is contained in:
57
src/searchHistory/searchHistory.js
Normal file
57
src/searchHistory/searchHistory.js
Normal file
@@ -0,0 +1,57 @@
|
||||
const establishedDatabase = require("../database/database");
|
||||
|
||||
class SearchHistory {
|
||||
constructor(database) {
|
||||
this.database = database || establishedDatabase;
|
||||
this.queries = {
|
||||
create:
|
||||
"insert into search_history (search_query, user_name) values (?, ?)",
|
||||
read: "select search_query from search_history where user_name = ? order by id desc"
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive a search queries for a user from the database.
|
||||
* @param {User} user existing user
|
||||
* @returns {Promise}
|
||||
*/
|
||||
read(user) {
|
||||
return new Promise((resolve, reject) =>
|
||||
this.database
|
||||
.all(this.queries.read, user)
|
||||
.then((result, error) => {
|
||||
if (error) throw new Error(error);
|
||||
resolve(result.map(row => row.search_query));
|
||||
})
|
||||
.catch(error => {
|
||||
console.log("Error when fetching history from database:", error);
|
||||
reject("Unable to get history.");
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new search entry in the database.
|
||||
* @param {String} username logged in user doing the search
|
||||
* @param {String} searchQuery the query the user searched for
|
||||
* @returns {Promise}
|
||||
*/
|
||||
create(username, searchQuery) {
|
||||
return this.database
|
||||
.run(this.queries.create, [searchQuery, username])
|
||||
.catch(error => {
|
||||
if (error.message.includes("FOREIGN")) {
|
||||
throw new Error("Could not create search history.");
|
||||
}
|
||||
|
||||
throw {
|
||||
success: false,
|
||||
status: 500,
|
||||
message: "An unexpected error occured",
|
||||
source: "database"
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SearchHistory;
|
||||
Reference in New Issue
Block a user