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
							 | 
						||
| 
								 | 
							
								};
							 |