files.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import connection from "./base.js";
  2. /*
  3. `file_id` VARCHAR(100) NOT NULL, -- file_id 长度为 100
  4. `md5` VARCHAR(32) NOT NULL, -- MD5 长度为 32
  5. `mimetype` VARCHAR(255) NOT NULL, -- mimetype 长度为 255
  6. `size` INT NOT NULL,
  7. `name` VARCHAR(255) DEFAULT NULL,
  8. `path` VARCHAR(255) DEFAULT NULL,
  9. */
  10. export async function files_insert({
  11. file_id = "",
  12. source_id = "",
  13. md5 = "",
  14. mimetype = "",
  15. size = "",
  16. name = "",
  17. path = "",
  18. content = "",
  19. old_path = "",
  20. book_id = "",
  21. }) {
  22. return new Promise(async (resolve, reject) => {
  23. try {
  24. const sql = `
  25. INSERT INTO files (file_id, source_id, md5, mimetype, size, name, path, content, old_path, book_id)
  26. VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY
  27. UPDATE file_id = file_id;
  28. `;
  29. const values = [file_id, source_id, md5, mimetype, size, name, path, content, old_path, book_id];
  30. // 直接接收 execute 返回的内容
  31. const result = await connection.execute(sql, values);
  32. return resolve(result);
  33. } catch (err) {
  34. return resolve(false);
  35. }
  36. });
  37. }
  38. export async function files_insert_link_epub({
  39. file_id = "",
  40. book_id = "",
  41. author_id = "",
  42. }) {
  43. // console.log("files_insert_link_epub", {
  44. // file_id,
  45. // book_id,
  46. // author_id,
  47. // });
  48. return new Promise(async (resolve, reject) => {
  49. try {
  50. const sql = `
  51. INSERT INTO book_link_file (file_id, book_id, author_id)
  52. VALUES (?, ?, ?);
  53. `;
  54. const values = [file_id, book_id, author_id];
  55. // 直接接收 execute 返回的内容
  56. connection.execute(sql, values, (err, row) => {
  57. if (err) {
  58. console.log(606060, err);
  59. return resolve(false);
  60. }
  61. return resolve(row);
  62. });
  63. } catch (err) {
  64. return resolve(false);
  65. }
  66. });
  67. }
  68. // 查询图片信息
  69. export function getFileBymd5(md5Str) {
  70. return new Promise((resolve, reject) => {
  71. connection.query(
  72. `SELECT files.*, book_link_file.book_id AS book_id
  73. FROM files
  74. JOIN book_link_file ON files.file_id = book_link_file.file_id
  75. WHERE files.file_id = ?`,
  76. [md5Str],
  77. (err, rows) => {
  78. if (err) {
  79. resolve(false); // 如果出现错误,返回 false
  80. } else {
  81. resolve(rows.length > 0 ? rows[0] : false); // 如果存在记录,返回第一条记录,否则返回 false
  82. }
  83. }
  84. );
  85. });
  86. }
  87. // 查询图片信息
  88. export function searchFileByPath(imgPath, file_md5) {
  89. return new Promise((resolve, reject) => {
  90. connection.query(
  91. `SELECT *
  92. FROM files
  93. WHERE path like ? ${file_md5 ? "and path like ?" : ""};`,
  94. [`%${imgPath}%`, `%${file_md5}%`],
  95. (err, rows) => {
  96. if (err) {
  97. resolve(false); // 如果存在记录,则返回 true,否则返回 false
  98. } else {
  99. resolve(rows.length > 0 ? rows[0] : false); // 如果存在记录,则返回 true,否则返回 false
  100. }
  101. }
  102. );
  103. });
  104. }
  105. // 查询图片信息
  106. export function searchFileByName(fileName, fileMd5) {
  107. return new Promise((resolve, reject) => {
  108. const query = `
  109. SELECT *
  110. FROM files
  111. JOIN book_link_file ON files.file_id = book_link_file.file_id
  112. AND book_link_file.book_id = ?
  113. WHERE name LIKE ? ${fileMd5 ? "OR path LIKE ?" : ""};
  114. `;
  115. const queryParams = fileMd5
  116. ? [fileMd5, `%${fileName}%`, `%${fileMd5}%`]
  117. : [fileMd5, `%${fileName}%`];
  118. connection.query(query, queryParams, (err, rows) => {
  119. if (err) {
  120. return reject(err);
  121. }
  122. resolve(rows.length > 0 ? rows[0] : false);
  123. });
  124. });
  125. }