-
Notifications
You must be signed in to change notification settings - Fork 1
/
sample.bal
77 lines (59 loc) · 2.82 KB
/
sample.bal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import ballerina/http;
import ballerina/sql;
import ballerinax/mysql.driver as _;
import ballerinax/mysql;
// Types
type User record {|
string userName;
int allowAccess;
string? endSub?;
|};
type RiskRequest record {
string userName;
};
// MySQL configuration parameters
configurable string host = ?;
configurable int port = ?;
configurable string user = ?;
configurable string password = ?;
configurable string database = ?;
final mysql:Client mysqlClient = check new (host = host, port = port, user = user, password = password,
database = database);
service /company on new http:Listener(8090) {
isolated resource function post user(@http:Payload User payload) returns error? {
sql:ParameterizedQuery insertQuery = `INSERT INTO Users (userName,allowAccess,endSub) VALUES (${payload.userName}, ${payload.allowAccess}, DATE_ADD(now(),interval 5 day))`;
sql:ExecutionResult _ = check mysqlClient->execute(insertQuery);
}
isolated resource function put user(@http:Payload User payload) returns error? {
sql:ParameterizedQuery updateQuery = `UPDATE Users SET allowAccess=${payload.allowAccess},
endSub=${payload?.endSub} where
userName= ${payload.userName}`;
sql:ExecutionResult _ = check mysqlClient->execute(updateQuery);
}
isolated resource function get users(string userName) returns json|error {
sql:ParameterizedQuery selectQuery = `select userName,allowAccess,endSub from Users where userName=${userName}`;
stream <User, sql:Error?> resultStream = mysqlClient->query(selectQuery);
User[] users = [];
check from User item in resultStream
do {
users.push(item);
};
return users;
}
isolated resource function post risk(@http:Payload RiskRequest payload) returns User|error? {
//sql:ParameterizedQuery insertQuery = `INSERT INTO Users (userName,allowAccess,endSub) VALUES (${payload.userName}, ${payload.allowAccess}, DATE_ADD(now(),interval 5 day))`;
//sql:ExecutionResult _ = check mysqlClient->execute(insertQuery);
sql:ParameterizedQuery selectQuery = `select userName,allowAccess,endSub from Users where userName=${payload.userName}`;
stream <User, sql:Error?> resultStream = mysqlClient->query(selectQuery);
User[] users = [];
check from User item in resultStream
do {
users.push(item);
};
return users[0];
}
isolated resource function delete user(string userName) returns error? {
sql:ParameterizedQuery deleteQuery = `DELETE FROM Users WHERE userName = ${userName}`;
sql:ExecutionResult _ = check mysqlClient->execute(deleteQuery);
}
}