Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. import * as pg from "pg";
  2.  
  3. const pool = new pg.Pool({
  4. database: "postgres"
  5. });
  6.  
  7. export const insert = async (
  8. tableName: string,
  9. data: {},
  10. returning?: string
  11. ) => {
  12. const db = await pool.connect();
  13. const result = await db.query(
  14. `INSERT into ${tableName} (${Object.keys(data).join(
  15. ", "
  16. )}) VALUES (${Object.keys(data)
  17. .map((item, i) => `$${i + 1}`)
  18. .join(", ")}) ${returning ? `RETURNING ${returning}` : ""};`,
  19. Object.values(data)
  20. );
  21. await db.release();
  22. return result;
  23. };
  24.  
  25. export const query = async (query: string, values?: {}[]) => {
  26. const db = await pool.connect();
  27. const result = await db.query(query, values);
  28. await db.release();
  29. return result;
  30. };
  31.  
  32. export const update = async (
  33. tableName: string,
  34. data: {},
  35. where: string[],
  36. values: {}[]
  37. ) => {
  38. const db = await pool.connect();
  39. const result = await db.query(
  40. `UPDATE ${tableName}
  41. SET ${Object.keys(data)
  42. .map((item, i) => `${item} = $${i + 1 + values.length}`)
  43. .join(", ")}
  44. WHERE ${whereClause(where)};`,
  45. values.concat(Object.values(data))
  46. );
  47. await db.release();
  48. return result;
  49. };
  50.  
  51. export const select = async (
  52. tableName: string,
  53. where?: string[],
  54. selection?: string,
  55. values?: any[]
  56. ) => {
  57. const db = await pool.connect();
  58. const result = db.query(
  59. `SELECT ${selection || "*"} FROM ${tableName} ${
  60. where ? `WHERE ${whereClause(where)}` : ""
  61. }`,
  62. values
  63. );
  64. await db.release();
  65. return result;
  66. };
  67.  
  68. export const deletee = async (
  69. tableName: string,
  70. where?: string[],
  71. values?: any[]
  72. ) => {
  73. const db = await pool.connect();
  74. const result = db.query(
  75. `DELETE FROM ${tableName} ${where ? `WHERE ${whereClause(where)}` : ""}`,
  76. values
  77. );
  78. await db.release();
  79. return result;
  80. };
  81.  
  82. const whereClause = (conditions: string[]) => {
  83. return conditions.join(" AND ");
  84. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement