mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-11-22 21:39:22 +00:00
Can update following state of a conversation
This commit is contained in:
parent
bd19411a48
commit
4406b8c882
@ -72,6 +72,28 @@ export class ConversationsController {
|
|||||||
handler.send(this.ConversationToAPI(conv));
|
handler.send(this.ConversationToAPI(conv));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update conversation settings
|
||||||
|
*
|
||||||
|
* @param handler Request handler
|
||||||
|
*/
|
||||||
|
public static async UpdateSettings(handler: RequestHandler) : Promise<void> {
|
||||||
|
const convID = await this.GetPostConversationId("conversationID", handler);
|
||||||
|
|
||||||
|
// Update following state, if required
|
||||||
|
if(handler.hasPostParameter("following")) {
|
||||||
|
await ConversationsHelper.SetFollowing(
|
||||||
|
handler.getUserId(),
|
||||||
|
convID,
|
||||||
|
handler.postBool("following")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO : update moderation settings
|
||||||
|
|
||||||
|
handler.success("Conversation information successfully updated!");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get and return safely a conversation ID specified in a $_POST Request
|
* Get and return safely a conversation ID specified in a $_POST Request
|
||||||
*
|
*
|
||||||
|
@ -55,6 +55,7 @@ export const Routes : Route[] = [
|
|||||||
{path: "/conversations/getInfoOne", cb: (h) => ConversationsController.GetInfoSingle(h)},
|
{path: "/conversations/getInfoOne", cb: (h) => ConversationsController.GetInfoSingle(h)},
|
||||||
{path: "/conversations/getInfosOne", cb: (h) => ConversationsController.GetInfoSingle(h)}, // Legacy
|
{path: "/conversations/getInfosOne", cb: (h) => ConversationsController.GetInfoSingle(h)}, // Legacy
|
||||||
|
|
||||||
|
{path: "/conversations/updateSettings", cb: (h) => ConversationsController.UpdateSettings(h)},
|
||||||
|
|
||||||
// Search controller
|
// Search controller
|
||||||
{path: "/search/user", cb: (h) => SearchController.SearchUser(h)},
|
{path: "/search/user", cb: (h) => SearchController.SearchUser(h)},
|
||||||
|
@ -52,6 +52,15 @@ export class RequestHandler {
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out whether a post parameter is present into the request or not
|
||||||
|
*
|
||||||
|
* @param name The name of the post field to check
|
||||||
|
*/
|
||||||
|
public hasPostParameter(name: string) : boolean {
|
||||||
|
return this.getPostParam(name) != undefined;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an email address included in a post request
|
* Get an email address included in a post request
|
||||||
*
|
*
|
||||||
@ -233,7 +242,7 @@ export class RequestHandler {
|
|||||||
this.responseSent = true;
|
this.responseSent = true;
|
||||||
|
|
||||||
if(should_throw)
|
if(should_throw)
|
||||||
throw Error("Could not complete request! ("+ message +")");
|
throw Error("Could not complete request! ("+ message +")");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,6 +146,26 @@ export class ConversationsHelper {
|
|||||||
}) == 1;
|
}) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update following state of the conversation
|
||||||
|
*
|
||||||
|
* @param userID User to update
|
||||||
|
* @param convID Target conversation ID
|
||||||
|
* @param following New status
|
||||||
|
*/
|
||||||
|
public static async SetFollowing(userID: number, convID: number, following: boolean) {
|
||||||
|
await DatabaseHelper.UpdateRows({
|
||||||
|
table: USERS_TABLE,
|
||||||
|
set: {
|
||||||
|
"following": following ? 1 : 0
|
||||||
|
},
|
||||||
|
where: {
|
||||||
|
"conv_id": convID,
|
||||||
|
"user_id": userID
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of members of a conversation
|
* Get the list of members of a conversation
|
||||||
*
|
*
|
||||||
|
@ -23,6 +23,12 @@ export interface QueryInformation {
|
|||||||
limit ?: number,
|
limit ?: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface UpdateInformation {
|
||||||
|
table: string,
|
||||||
|
set: Object,
|
||||||
|
where ?: Object,
|
||||||
|
}
|
||||||
|
|
||||||
export interface CountQueryInformation {
|
export interface CountQueryInformation {
|
||||||
table: string,
|
table: string,
|
||||||
where ?: Object
|
where ?: Object
|
||||||
@ -177,6 +183,66 @@ export class DatabaseHelper {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform update on the database
|
||||||
|
*
|
||||||
|
* @param info Information about the request
|
||||||
|
* @returns The number of affected rows
|
||||||
|
*/
|
||||||
|
static async UpdateRows(info : UpdateInformation) : Promise<number> {
|
||||||
|
let sql = "UPDATE " + info.table + " SET ";
|
||||||
|
let args = [];
|
||||||
|
|
||||||
|
// Process updates
|
||||||
|
let isFirst = true;
|
||||||
|
for (const key in info.set) {
|
||||||
|
if (info.set.hasOwnProperty(key)) {
|
||||||
|
const value = info.set[key];
|
||||||
|
|
||||||
|
if(!isFirst)
|
||||||
|
sql += ", ";
|
||||||
|
else
|
||||||
|
isFirst = false;
|
||||||
|
|
||||||
|
sql += key + " = ? "
|
||||||
|
args.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process conditions
|
||||||
|
isFirst = true;
|
||||||
|
if(info.where) {
|
||||||
|
sql += " WHERE ";
|
||||||
|
for (const key in info.where) {
|
||||||
|
if (info.where.hasOwnProperty(key)) {
|
||||||
|
const value = info.where[key];
|
||||||
|
|
||||||
|
if(!isFirst)
|
||||||
|
sql += " AND ";
|
||||||
|
else
|
||||||
|
isFirst = false;
|
||||||
|
|
||||||
|
sql += key + " = ? "
|
||||||
|
args.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw Error("Error : Updates without conditions are blocked for security!");
|
||||||
|
|
||||||
|
// Execute request
|
||||||
|
return await new Promise((resolve, reject) => {
|
||||||
|
this.connection.query(sql, args, (err, results, f) => {
|
||||||
|
if(err){
|
||||||
|
reject(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve(results.affectedRows);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete entries from a table
|
* Delete entries from a table
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user