lib.service.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. const connection = require('../sql');
  2. class PagesService {
  3. async listCount(keyword, type, userId) {
  4. const statement =
  5. "SELECT COUNT(`id`) total FROM lib WHERE (name like COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL) AND " +
  6. (type == 1 ? 'user_id = ?' : 'user_id != ?');
  7. const [result] = await connection.execute(statement, [keyword || null, keyword || null, userId]);
  8. return result[0];
  9. }
  10. async list(pageNum, pageSize, keyword, type, userId) {
  11. const offset = (+pageNum - 1) * pageSize + '';
  12. const limit = pageSize;
  13. const statement =
  14. `
  15. SELECT
  16. id,
  17. tag,
  18. name,
  19. description,
  20. user_id as userId,
  21. SUBSTRING_INDEX(user_name, '@', 1) as userName,
  22. updated_at as updatedAt,
  23. created_at as createdAt
  24. FROM
  25. lib
  26. WHERE
  27. (name LIKE COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL) AND ` +
  28. (type == 1 ? 'user_id = ? ' : 'user_id != ? ') +
  29. `ORDER BY updated_at DESC LIMIT ${offset},${limit};`;
  30. const [result] = await connection.execute(statement, [keyword || null, keyword || null, userId]);
  31. return result;
  32. }
  33. async installList(userId) {
  34. const statement = `
  35. SELECT
  36. a.id,
  37. a.tag,
  38. a.name,
  39. a.user_id as userId,
  40. SUBSTRING_INDEX(a.user_name, '@', 1) as userName,
  41. b.release_id as releaseId,
  42. b.react_url as reactUrl,
  43. b.css_url as cssUrl,
  44. b.config_url as configUrl,
  45. b.release_hash as releaseHash
  46. FROM
  47. lib as a
  48. RIGHT JOIN
  49. lib_publish as b
  50. ON
  51. a.id = b.lib_id
  52. WHERE b.user_id = ?
  53. ORDER BY a.updated_at DESC
  54. `;
  55. const [result] = await connection.execute(statement, [userId]);
  56. return result;
  57. }
  58. async createLib(tag, name, description = '', userId, userName) {
  59. const statement = 'INSERT INTO lib (tag, name, description,user_id,user_name) VALUES (?, ?, ?, ?, ?);';
  60. const [result] = await connection.execute(statement, [tag, name, description, userId, userName]);
  61. return result;
  62. }
  63. async getDetailById(id, userId) {
  64. const statement = `
  65. select
  66. a.id,
  67. a.tag,
  68. a.name,
  69. a.description,
  70. a.react_code as reactCode,
  71. a.less_code as lessCode,
  72. a.config_code as configCode,
  73. a.md_code as mdCode,
  74. a.hash,
  75. a.user_id as userId,
  76. SUBSTRING_INDEX(a.user_name, '@', 1) as userName,
  77. a.updated_at as updatedAt,
  78. a.created_at as createdAt,
  79. b.release_id as releaseId,
  80. b.react_url as reactUrl,
  81. b.css_url as cssUrl,
  82. b.config_url as configUrl,
  83. b.release_hash as releaseHash
  84. from
  85. lib as a
  86. left join
  87. lib_publish as b
  88. ON
  89. a.id = b.lib_id
  90. where a.id = ? and a.user_id = ?;`;
  91. const [result] = await connection.execute(statement, [id, userId]);
  92. return result;
  93. }
  94. async getOwnLibById(id, userId) {
  95. const statement = 'SELECT * FROM lib WHERE id = ? AND user_id = ?;';
  96. const [result] = await connection.execute(statement, [id, userId]);
  97. return result[0];
  98. }
  99. async deleteLibById(id, userId) {
  100. const statement = 'DELETE FROM lib WHERE id = ? and user_id = ?;';
  101. const [result] = await connection.execute(statement, [id, userId]);
  102. return result;
  103. }
  104. async updateLib(tag, name, description, id) {
  105. const statement = 'UPDATE lib SET tag = ?, name = ?, description = ? where id = ?';
  106. const [result] = await connection.execute(statement, [tag, name, description, id]);
  107. return result;
  108. }
  109. async saveLib(params) {
  110. let statement = `UPDATE lib SET updated_at = ?`;
  111. let sql_params = [new Date()];
  112. if (params.reactCode) {
  113. statement += `, react_code = ?`;
  114. sql_params.push(params.reactCode);
  115. }
  116. if (params.lessCode) {
  117. statement += `, less_code = ?`;
  118. sql_params.push(params.lessCode);
  119. }
  120. if (params.configCode) {
  121. statement += `, config_code = ?`;
  122. sql_params.push(params.configCode);
  123. }
  124. if (params.mdCode) {
  125. statement += `, md_code = ?`;
  126. sql_params.push(params.mdCode);
  127. }
  128. if (params.hash) {
  129. statement += `, hash = ?`;
  130. sql_params.push(params.hash);
  131. }
  132. statement += ` WHERE id = ?;`;
  133. sql_params.push(params.id);
  134. const [result] = await connection.execute(statement, sql_params);
  135. return result;
  136. }
  137. async publish(params) {
  138. const statement =
  139. 'INSERT INTO lib_publish (release_id, lib_id, react_url, css_url, config_url, release_hash, user_id, user_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?);';
  140. const [result] = await connection.execute(statement, [
  141. params.releaseId,
  142. params.libId,
  143. params.reactUrl,
  144. params.cssUrl,
  145. params.configUrl,
  146. params.releaseHash,
  147. params.userId,
  148. params.userName,
  149. ]);
  150. return result;
  151. }
  152. async getPublishByLibId(lib_id) {
  153. const statement =
  154. 'SELECT id, release_id as releaseId, lib_id as libId, react_url as reactUrl, css_url as cssUrl, config_url as configUrl, release_hash as releaseHash, user_id as userId, user_name as userName, count, updated_at as updatedAt FROM lib_publish WHERE lib_id = ?;';
  155. const [result] = await connection.execute(statement, [lib_id]);
  156. return result[0];
  157. }
  158. async updateLibPublish(params) {
  159. let statement = `UPDATE lib_publish SET react_url = ?, config_url = ?, release_hash = ?, count = count + 1`;
  160. let sql_params = [params.reactUrl, params.configUrl, params.releaseHash];
  161. if (params.cssUrl) {
  162. statement += `, css_url = ?`;
  163. sql_params.push(params.cssUrl);
  164. }
  165. statement += ` WHERE lib_id = ?`;
  166. sql_params.push(params.libId);
  167. const [result] = await connection.execute(statement, sql_params);
  168. return result;
  169. }
  170. async deletePublishById(lib_id, userId) {
  171. const statement = 'DELETE FROM lib_publish WHERE lib_id = ? and user_id = ?;';
  172. const [result] = await connection.execute(statement, [lib_id, userId]);
  173. return result;
  174. }
  175. }
  176. module.exports = new PagesService();