-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
…te-function Ngrok in docker, type checking
- Loading branch information
Showing
15 changed files
with
730 additions
and
543 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,108 +1,119 @@ | ||
import { Client, Query } from 'ts-postgres'; | ||
import { createPool } from 'generic-pool'; | ||
import * as config from './config'; | ||
import { Client, Query, DatabaseError } from "ts-postgres"; | ||
import { createPool } from "generic-pool"; | ||
import * as config from "./config"; | ||
|
||
const pool = createPool({ | ||
create: async () => { | ||
return new Promise<Client>((resolve, reject) => { | ||
|
||
const client = new Client({ | ||
'host': 'database', // name of docker container, not 'localhost' | ||
'port': config.postgresPort, | ||
'user': config.postgresUser, | ||
'password': config.postgresPassword, | ||
'database': config.postgresDB | ||
}); | ||
|
||
client.connect() | ||
.then(() => { | ||
console.log("successfully connected to db") | ||
resolve(client); | ||
}).catch((err: any) => { | ||
console.log() | ||
console.log(err) | ||
reject(err); | ||
}); | ||
}); | ||
}, | ||
destroy: async (client: Client) => { | ||
return client.end() | ||
}, | ||
validate: (client: Client) => { | ||
return Promise.resolve(!client.closed); | ||
} | ||
}, { | ||
testOnBorrow: true, | ||
max: 10 | ||
}) | ||
const pool = createPool( | ||
{ | ||
create: async () => { | ||
return new Promise<Client>((resolve, reject) => { | ||
const client = new Client({ | ||
host: "database", // name of docker container, not 'localhost' | ||
port: config.postgresPort, | ||
user: config.postgresUser, | ||
password: config.postgresPassword, | ||
database: config.postgresDB, | ||
}); | ||
|
||
client | ||
.connect() | ||
.then(() => { | ||
console.log("successfully connected to db"); | ||
resolve(client); | ||
}) | ||
.catch((err: DatabaseError) => { | ||
console.log(err); | ||
reject(err); | ||
}); | ||
}); | ||
}, | ||
destroy: async (client: Client) => { | ||
return client.end(); | ||
}, | ||
validate: (client: Client) => { | ||
return Promise.resolve(!client.closed); | ||
}, | ||
}, | ||
{ | ||
testOnBorrow: true, | ||
max: 10, | ||
} | ||
); | ||
|
||
const executeQuery = (query: Query) => { | ||
console.log('executing query'); | ||
|
||
const res = pool.acquire(); | ||
console.log("executing query"); | ||
|
||
return res.then(async (client: Client) => { | ||
console.log('aquired client from pool') | ||
const result = await client.execute(query); | ||
pool.release(client).then(() => { | ||
console.log("client released back into pool") | ||
}); | ||
return result; | ||
}).catch((err: any) => { | ||
console.log(err); | ||
}) | ||
} | ||
const res = pool.acquire(); | ||
|
||
return res | ||
.then(async (client: Client) => { | ||
console.log("aquired client from pool"); | ||
const result = await client.execute(query); | ||
pool.release(client).then(() => { | ||
console.log("client released back into pool"); | ||
}); | ||
return result; | ||
}) | ||
.catch((err: DatabaseError) => { | ||
console.log(err); | ||
}); | ||
}; | ||
|
||
export const shutdown = () => { | ||
pool.drain() | ||
.then(() => { | ||
return pool.clear(); | ||
}); | ||
} | ||
pool.drain().then(() => { | ||
return pool.clear(); | ||
}); | ||
}; | ||
|
||
export const insert = (table: string, params: any) => { | ||
let fileName = params.fileName; | ||
let folderName = params.folderName; | ||
let fusionID = null; | ||
let username = null; | ||
let size = null; | ||
let version = null; | ||
|
||
let fileName = params.fileName; | ||
let folderName = params.folderName; | ||
let fusionID = null; | ||
let username = null; | ||
let size = null; | ||
let version = null; | ||
if (params.hasOwnProperty("fusionID")) { | ||
fusionID = params.fusionID; | ||
} | ||
if (params.hasOwnProperty("username")) { | ||
username = params.username; | ||
} | ||
if (params.hasOwnProperty("size")) { | ||
size = params.size; | ||
} | ||
if (params.hasOwnProperty("version")) { | ||
version = params.version; | ||
} | ||
|
||
if (params.hasOwnProperty('fusionID')) {fusionID = params.fusionID} | ||
if (params.hasOwnProperty('username')) {username = params.username} | ||
if (params.hasOwnProperty('size')) {size = params.size} | ||
if (params.hasOwnProperty('version')) {version = params.version} | ||
|
||
let query: Query; | ||
let query: Query; | ||
|
||
console.log("params: ", params); | ||
console.log("params: ", params); | ||
|
||
switch(table) { | ||
case 'fusion': | ||
query = new Query ( | ||
"INSERT INTO fusion (fusion_id, folder_name, file_name, username, size, version)" + | ||
"VALUES ($1, $2, $3, $4, $5, $6)", | ||
[fusionID, folderName, fileName, username, size, version] | ||
); | ||
break; | ||
case 'local': | ||
query = new Query ( | ||
"INSERT INTO local (file_name, folder_name, fusion_id)" + | ||
"VALUES ($1, $2, $3)", | ||
[fileName, folderName, fusionID] | ||
); | ||
break; | ||
case 'archive': | ||
query = new Query ( | ||
"INSERT INTO archive (fusion_id, folder_name, file_name, username, size, version)" + | ||
"VALUES ($1, $2, $3, $4, $5, $6)", | ||
[fusionID, folderName, fileName, username, size, version] | ||
); | ||
break; | ||
default: | ||
throw new Error("Invalid table/params"); | ||
} | ||
switch (table) { | ||
case "fusion": | ||
query = new Query( | ||
"INSERT INTO fusion (fusion_id, folder_name, file_name, username, size, version)" + | ||
"VALUES ($1, $2, $3, $4, $5, $6)", | ||
[fusionID, folderName, fileName, username, size, version] | ||
); | ||
break; | ||
case "local": | ||
query = new Query( | ||
"INSERT INTO local (file_name, folder_name, fusion_id)" + | ||
"VALUES ($1, $2, $3)", | ||
[fileName, folderName, fusionID] | ||
); | ||
break; | ||
case "archive": | ||
query = new Query( | ||
"INSERT INTO archive (fusion_id, folder_name, file_name, username, size, version)" + | ||
"VALUES ($1, $2, $3, $4, $5, $6)", | ||
[fusionID, folderName, fileName, username, size, version] | ||
); | ||
break; | ||
default: | ||
throw new Error("Invalid table/params"); | ||
} | ||
|
||
return executeQuery(query); | ||
} | ||
return executeQuery(query); | ||
}; |
Oops, something went wrong.