48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { nanoid } = require('nanoid');
 | 
						|
const { getDb } = require('../db/connect');
 | 
						|
const { snippets: snippetQueries } = require('../db/queries');
 | 
						|
 | 
						|
const createSnippet = async (userId, { title, html, css, js }) => {
 | 
						|
  const snippetId = nanoid();
 | 
						|
  const shareId = nanoid(10);
 | 
						|
  const db = getDb();
 | 
						|
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    db.run(
 | 
						|
      snippetQueries.insert,
 | 
						|
      [snippetId, userId, title, html, css, js, shareId],
 | 
						|
      function(err) {
 | 
						|
        if (err) reject(err);
 | 
						|
        resolve({ id: snippetId, shareId });
 | 
						|
      }
 | 
						|
    );
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
const getUserSnippets = async (userId) => {
 | 
						|
  const db = getDb();
 | 
						|
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    db.all(snippetQueries.getUserSnippets, [userId], (err, snippets) => {
 | 
						|
      if (err) reject(err);
 | 
						|
      resolve(snippets);
 | 
						|
    });
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
const getSharedSnippet = async (shareId) => {
 | 
						|
  const db = getDb();
 | 
						|
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    db.get(snippetQueries.getByShareId, [shareId], (err, snippet) => {
 | 
						|
      if (err) reject(err);
 | 
						|
      resolve(snippet);
 | 
						|
    });
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  createSnippet,
 | 
						|
  getUserSnippets,
 | 
						|
  getSharedSnippet
 | 
						|
}; |