Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

dbs.js 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /*
  2. * Main database access functions
  3. */
  4. var common,
  5. model = {};
  6. const dbs = {
  7. /* Method API route
  8. * <- to server
  9. * -> to client
  10. * Description
  11. */
  12. routes: {
  13. "msg/ids": {
  14. /* GET /api/msg/ids [no args]
  15. * -> Array of message schema object ids
  16. * Get ALL known message ids
  17. */
  18. get: function(req, res) {
  19. model.Messages.find({}, {_id: true}).exec()
  20. .then(results => {
  21. //selects id from message:
  22. var parsed = [];
  23. for (var i in results) {
  24. parsed.push (results[i]._id);
  25. }
  26. //var parsed = results.map (x => x._id);
  27. res.send(parsed);
  28. } )
  29. .catch(err => {
  30. console.log (err);
  31. res.status(500).json(err);
  32. });
  33. },
  34. },
  35. "msg/id": {
  36. params: ":id",
  37. /* GET /api/msg/id/[massage-id]
  38. * -> Message schema
  39. * Get a particular message
  40. */
  41. get: function(req, res) {
  42. model.Messages.findById(req.params.id) .exec(function(err, results) {
  43. if (err) {
  44. console.log (err);
  45. res.status(404).json(err);
  46. } else {
  47. //console.log(JSON.stringify(results));
  48. res.json(results);
  49. }
  50. });
  51. },
  52. },
  53. "msg/search": {},
  54. "msg": {
  55. /* POST /api/msg
  56. * <- Message schema
  57. * -> Message schema
  58. * Create a new message
  59. */
  60. post: function(req, res) {
  61. /*
  62. if ( !(req.body.tags instanceof Array) ) {
  63. return res.status(400).json({ error: "bad request" });
  64. }*/
  65. console.log("Subject: "+JSON.stringify(req.body));
  66. model.Messages.create({
  67. subject: req.body.subject,
  68. message: req.body.message,
  69. user: req.body.user,
  70. tags: req.body.tag
  71. }, function(err, result) {
  72. if (err) {
  73. return res.status(401).json(err.message);
  74. } else {
  75. res.json({message: "Message created!!"});
  76. }
  77. if (result == null) {
  78. return res.status(500).json("Can not create message.")
  79. }
  80. });
  81. },
  82. /* PUT /api/msg
  83. * <-
  84. * ->
  85. * Update a message
  86. */
  87. //put: function(req, res) {},
  88. },
  89. "tag/ids": {},
  90. "tag": {},
  91. },
  92. /* Initialize requirements
  93. * - DB connection
  94. * - DB schemata
  95. */
  96. init: function (_common) {
  97. common = _common;
  98. /* DB Connection
  99. * Local db: common.config.dbLocalConn
  100. * TH db: common.config.dbConn
  101. */
  102. common.mongoose.connect (common.config.dbLocalConn, {
  103. useNewUrlParser: true
  104. }).then(() => {
  105. console.log("Database connected successfully.");
  106. }).catch(err => {
  107. console.log('Database connection error.');
  108. process.exit();
  109. });
  110. /* DB Schemata
  111. * Privat fields:
  112. * - per model: _list: Elements that are included in list fetch
  113. * - per entry: _comment: Comment for Admin UI - TODO: not working yet
  114. */
  115. var messageSchema = common.mongoose.Schema({
  116. subject: { type: String, required: true,
  117. _comment: "" },
  118. message: { type: String, required: true,
  119. _comment: "" },
  120. user: { type: String, required: true,
  121. _comment: "" },
  122. tags: { type: [String],
  123. _comment: "" },
  124. //createtime: { type: Date, default: Date.now },
  125. });
  126. messageSchema.index({ tag:'text' });
  127. model.Messages = common.mongoose.model('messages', messageSchema);
  128. model.Messages._list = [ "" ];
  129. var tagSchema = common.mongoose.Schema({
  130. name: { type: String, required: true,
  131. _comment: "" }, //unique
  132. });
  133. model.Tags = common.mongoose.model('tags', messageSchema);
  134. model.Tags._list = [ "" ];
  135. var userSchema = common.mongoose.Schema({
  136. //_id: { type: String },
  137. name: { type: String, required: true,
  138. _comment: "" },
  139. pwd: { type: String,
  140. _comment: "" },
  141. //hash: { type: String },
  142. //salt: { type: String },
  143. //type: { type: String },
  144. roles: { type: [String], required: true,
  145. _comment: "" },
  146. tags: { type: [String],
  147. _comment: "" },
  148. //deactivated: { type: Boolean },
  149. //participating: { type: [String] },
  150. //host: { type: Boolean },
  151. bookmarks: { type: [String],
  152. _comment: "" },
  153. });
  154. model.Users = common.mongoose.model('users', userSchema);
  155. model.Users._list = [ "" ];
  156. },
  157. models: model,
  158. };
  159. /*
  160. app.get ('/api/ids', function (req, res) {
  161. Message.find({},{id: true}) .exec () .then(results => {
  162. //selects id from message:
  163. var parsed = [];
  164. for (var i in results) {
  165. parsed.push (results[i].id);
  166. }
  167. //var parsed = results.map (x => x._id);
  168. res.send(parsed);
  169. } )
  170. .catch(err => {
  171. console.log (err);
  172. res .status(500) .json (err);
  173. });
  174. });
  175. app.get ("/api/msg/:id", function (req, res) {
  176. Message.findOne ({_id: req.params.id}) .exec (function (err, results){
  177. if (err) {
  178. console.log (err);
  179. res .status(404) .json (err);
  180. } else {
  181. console.log(JSON.stringify(results));
  182. res.json(results);
  183. }
  184. });
  185. });
  186. /*app.get ("/api/msg/search/:phrase", function (req, res) {
  187. Message.find ({$text: {$search: req.params.phrase}) .then (function (err, results){
  188. if (err) {
  189. console.log (err);
  190. res .status(404) .json (err);
  191. } else {
  192. console.log(JSON.stringify(results));
  193. res.json(results);
  194. }
  195. });
  196. });
  197. */
  198. /*
  199. app.post("/api/createMsg", function(req, res){
  200. console.log("Subject: "+JSON.stringify(req.body));
  201. var message = new Message( {subject: req.body.sub, message: req.body.mess, user: req.body.use, tag: req.body.ta } );
  202. message.save(function(err,result){
  203. if(err){
  204. return res .status(401) .send(err.message);
  205. }else{
  206. res.json({message: "Message created!!"});
  207. }
  208. });
  209. });
  210. */
  211. module.exports = dbs;