123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- const connection = require('../sql');
- class PagesService {
- async listCount(keyword, type, userId) {
- const statement =
- "SELECT COUNT(`id`) total FROM lib WHERE (name like COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL) AND " +
- (type == 1 ? 'user_id = ?' : 'user_id != ?');
- const [result] = await connection.execute(statement, [keyword || null, keyword || null, userId]);
- return result[0];
- }
- async list(pageNum, pageSize, keyword, type, userId) {
- const offset = (+pageNum - 1) * pageSize + '';
- const limit = pageSize;
- const statement =
- `
- SELECT
- id,
- tag,
- name,
- description,
- user_id as userId,
- SUBSTRING_INDEX(user_name, '@', 1) as userName,
- updated_at as updatedAt,
- created_at as createdAt
- FROM
- lib
- WHERE
- (name LIKE COALESCE(CONCAT('%',?,'%'), name) OR ? IS NULL) AND ` +
- (type == 1 ? 'user_id = ? ' : 'user_id != ? ') +
- `ORDER BY updated_at DESC LIMIT ${offset},${limit};`;
- const [result] = await connection.execute(statement, [keyword || null, keyword || null, userId]);
- return result;
- }
- async installList(userId) {
- const statement = `
- SELECT
- a.id,
- a.tag,
- a.name,
- a.user_id as userId,
- SUBSTRING_INDEX(a.user_name, '@', 1) as userName,
- b.release_id as releaseId,
- b.react_url as reactUrl,
- b.css_url as cssUrl,
- b.config_url as configUrl,
- b.release_hash as releaseHash
- FROM
- lib as a
- RIGHT JOIN
- lib_publish as b
- ON
- a.id = b.lib_id
- WHERE b.user_id = ?
- ORDER BY a.updated_at DESC
- `;
- const [result] = await connection.execute(statement, [userId]);
- return result;
- }
- async createLib(tag, name, description = '', userId, userName) {
- const statement = 'INSERT INTO lib (tag, name, description,user_id,user_name) VALUES (?, ?, ?, ?, ?);';
- const [result] = await connection.execute(statement, [tag, name, description, userId, userName]);
- return result;
- }
- async getDetailById(id, userId) {
- const statement = `
- select
- a.id,
- a.tag,
- a.name,
- a.description,
- a.react_code as reactCode,
- a.less_code as lessCode,
- a.config_code as configCode,
- a.md_code as mdCode,
- a.hash,
- a.user_id as userId,
- SUBSTRING_INDEX(a.user_name, '@', 1) as userName,
- a.updated_at as updatedAt,
- a.created_at as createdAt,
- b.release_id as releaseId,
- b.react_url as reactUrl,
- b.css_url as cssUrl,
- b.config_url as configUrl,
- b.release_hash as releaseHash
- from
- lib as a
- left join
- lib_publish as b
- ON
- a.id = b.lib_id
- where a.id = ? and a.user_id = ?;`;
- const [result] = await connection.execute(statement, [id, userId]);
- return result;
- }
- async getOwnLibById(id, userId) {
- const statement = 'SELECT * FROM lib WHERE id = ? AND user_id = ?;';
- const [result] = await connection.execute(statement, [id, userId]);
- return result[0];
- }
- async deleteLibById(id, userId) {
- const statement = 'DELETE FROM lib WHERE id = ? and user_id = ?;';
- const [result] = await connection.execute(statement, [id, userId]);
- return result;
- }
- async updateLib(tag, name, description, id) {
- const statement = 'UPDATE lib SET tag = ?, name = ?, description = ? where id = ?';
- const [result] = await connection.execute(statement, [tag, name, description, id]);
- return result;
- }
- async saveLib(params) {
- let statement = `UPDATE lib SET updated_at = ?`;
- let sql_params = [new Date()];
- if (params.reactCode) {
- statement += `, react_code = ?`;
- sql_params.push(params.reactCode);
- }
- if (params.lessCode) {
- statement += `, less_code = ?`;
- sql_params.push(params.lessCode);
- }
- if (params.configCode) {
- statement += `, config_code = ?`;
- sql_params.push(params.configCode);
- }
- if (params.mdCode) {
- statement += `, md_code = ?`;
- sql_params.push(params.mdCode);
- }
- if (params.hash) {
- statement += `, hash = ?`;
- sql_params.push(params.hash);
- }
- statement += ` WHERE id = ?;`;
- sql_params.push(params.id);
- const [result] = await connection.execute(statement, sql_params);
- return result;
- }
- async publish(params) {
- const statement =
- 'INSERT INTO lib_publish (release_id, lib_id, react_url, css_url, config_url, release_hash, user_id, user_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?);';
- const [result] = await connection.execute(statement, [
- params.releaseId,
- params.libId,
- params.reactUrl,
- params.cssUrl,
- params.configUrl,
- params.releaseHash,
- params.userId,
- params.userName,
- ]);
- return result;
- }
- async getPublishByLibId(lib_id) {
- const statement =
- '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 = ?;';
- const [result] = await connection.execute(statement, [lib_id]);
- return result[0];
- }
- async updateLibPublish(params) {
- let statement = `UPDATE lib_publish SET react_url = ?, config_url = ?, release_hash = ?, count = count + 1`;
- let sql_params = [params.reactUrl, params.configUrl, params.releaseHash];
- if (params.cssUrl) {
- statement += `, css_url = ?`;
- sql_params.push(params.cssUrl);
- }
- statement += ` WHERE lib_id = ?`;
- sql_params.push(params.libId);
- const [result] = await connection.execute(statement, sql_params);
- return result;
- }
- async deletePublishById(lib_id, userId) {
- const statement = 'DELETE FROM lib_publish WHERE lib_id = ? and user_id = ?;';
- const [result] = await connection.execute(statement, [lib_id, userId]);
- return result;
- }
- }
- module.exports = new PagesService();
|