Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. const fs = require("fs");
  2. const sql = require("mssql/msnodesqlv8");
  3.  
  4. const defaultCaseSpecs = {
  5. clientId: 9053,
  6. caseName: "toothache"
  7. };
  8.  
  9. class Request {
  10.  
  11. constructor(config) {
  12. this.config = Object.assign({}, config);
  13. }
  14.  
  15. async newCase(caseSpecs) {
  16. let connection = await this.$connect();
  17. let caseP = await this.$enchanceCase(caseSpecs, connection);
  18. let queryResult = await connection.request().query(this.$withMetadata(`
  19. DECLARE @NewID INT
  20. EXEC pr_Case_INSERT @MetaData, '${case.clientId}', '', '${case.caseName}', NULL, @NewID OUTPUT
  21. SELECT @NewID AS NewCaseID
  22. `));
  23. await connection.request().query(this.$withMetadata(`
  24. EXEC pr_CasesForClient_SELECT @MetaData, ${case.clientId}
  25. EXEC pr_CaseStatusForClient_SELECT @MetaData, ${case.clientId}
  26. `));
  27. caseP.patientId = patientId;
  28. return caseP;
  29. }
  30.  
  31. async cleanup() {
  32. this.pool && this.pool.close();
  33. }
  34.  
  35. async $connect() {
  36. if (!this.pool) {
  37. this.pool = new sql.ConnectionPool(this.config);
  38. await this.pool.connect();
  39. }
  40. return this.pool;
  41. }
  42.  
  43. $withMetadata(sql) {
  44. return `
  45. DECLARE @MetaData TT_MetaData
  46. INSERT INTO @MetaData (TenantID, UserID, TimeZoneOffset, UseDaylightSavingsTime) VALUES (${this.config.tenantId}, ${this.config.userId}, -6, 1)
  47. ` + sql;
  48. }
  49.  
  50. async $enchanceCase(caseSpecs, connection) {
  51. caseSpecs = Object.assign({}, defaultCaseSpecs, caseSpecs);
  52. //if (!caseSpecs.caseName) {
  53. // caseSpecs.caseName = `Test-${new Date().getTime()}-${Math.floor(Math.random() * 100)}`;
  54. //}
  55. return caseSpecs;
  56. }
  57. }
  58.  
  59. function readConfig(fileName) {
  60. try {
  61. return JSON.parse(fs.readFileSync(fileName, "utf8"));
  62. }
  63. catch (error) {
  64. if (error.code !== "ENOENT") {
  65. throw error;
  66. }
  67. return undefined;
  68. }
  69. }
  70.  
  71. function mergeConfigs(...configs) {
  72. let merged = {};
  73. for (let config of configs) {
  74. if (!config) continue;
  75. let options = merged.options;
  76. Object.assign(merged, config);
  77. if (options || config.options) {
  78. merged.options = Object.assign({}, options, config.options);
  79. }
  80. }
  81. return merged;
  82. }
  83.  
  84. const defaultConfig = {
  85. server: ".",
  86. database: "clntacl",
  87. options: {
  88. trustedConnection: true
  89. }
  90. };
  91.  
  92. const config = mergeConfigs(defaultConfig,
  93. readConfig("./database.json"), readConfig("./database.local.json"));
  94.  
  95. const request = new Request(config);
  96.  
  97. module.exports = request;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement