Skip to content

Commit f170e1d

Browse files
committed
use pg-boss instead of graphile-worker, list orgs for user
1 parent e9eca0a commit f170e1d

File tree

9 files changed

+41
-35
lines changed

9 files changed

+41
-35
lines changed

db.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ $$ LANGUAGE plpgsql;
99

1010
CREATE TABLE IF NOT EXISTS users (
1111
id SERIAL PRIMARY KEY,
12-
github_id INTEGER NOT NULL UNIQUE,
12+
github_id INTEGER UNIQUE,
1313
username VARCHAR NOT NULL UNIQUE,
1414
email VARCHAR,
1515
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"ethers": "^4.0.37",
2727
"express-session": "^1.16.2",
2828
"fs-extra": "^8.1.0",
29-
"graphile-worker": "0.1.0-alpha.0",
3029
"ipfs-http-client": "^36.0.0",
3130
"isomorphic-unfetch": "^3.0.0",
3231
"jsonwebtoken": "^8.5.1",

pages/api/cred/[encodedTarget].js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const hash = require('hash.js')
22
const { readFile, readdir } = require('fs-extra')
33
const base64url = require("base64url")
4-
// const { boss, COLLECT_CRED_QUEUE } = require('../../../server/queue')
4+
const { COLLECT_CRED_QUEUE } = require('../../../utils/constants')
55

66
export default async(req, res) => {
77
const encodedTarget = req.query['encodedTarget']
@@ -15,9 +15,7 @@ export default async(req, res) => {
1515
resData = {data: await collateCred(encodedTarget)}
1616
} catch(e){
1717
console.log(e)
18-
// ensure no existing task
19-
let job = await req.runner.addJob('collectCred', {target, githubToken})
20-
// let job = await boss.publishOnce(COLLECT_CRED_QUEUE, {target, githubToken}, null, target)
18+
let job = await req.boss.publishOnce(COLLECT_CRED_QUEUE, {target, githubToken}, null, target)
2119
resData = {job, data: null}
2220
}
2321

pages/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
import Header from '../components/Header'
22
import { auth } from '../utils/auth'
3+
import { getUserInstallationsByUserId } from '../utils/installation'
34

45
const Index = (props) =>
56
<div>
67
<Header user={props.user} />
78
<p>{props.user ? `Welcome, ${props.user.username}` : `please login`}</p>
89
<p>This is the home page</p>
10+
{props.installations.length && <React.Fragment>
11+
<p>Your organizations:</p>
12+
<ul>{props.installations.map(i=><li key={i.id}>{i.name}</li>)}</ul>
13+
</React.Fragment>}
914
</div>
1015

1116
Index.getInitialProps = async function(ctx) {
1217
const { query } = ctx
1318
const user = await auth(ctx)
14-
return { user }
19+
const installations = user ? await getUserInstallationsByUserId(user.id) : []
20+
return { user, installations }
1521
}
1622

1723
export default Index

server/index.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ const session = require('express-session')
33
const next = require('next')
44
const { postgraphile } = require('postgraphile')
55
const PgManyToManyPlugin = require("@graphile-contrib/pg-many-to-many");
6-
const { run } = require('graphile-worker')
7-
const { GH_OAUTH_URL } = require('../utils/constants')
8-
// const { startBoss } = require('./queue')
9-
// const collectCred = require('../processors/collectCred')
6+
const { COLLECT_CRED_QUEUE, GH_OAUTH_URL } = require('../utils/constants')
7+
const PgBoss = require('pg-boss')
8+
const boss = new PgBoss(process.env.DATABASE_URL)
9+
const collectCred = require('../tasks/collectCred')
1010

1111
const dev = process.env.NODE_ENV !== 'production'
1212
const app = next({ dev })
@@ -16,16 +16,15 @@ main()
1616

1717
async function main(){
1818
// await startBoss()
19-
const runner = await run({
20-
connectionString: process.env.DATABASE_URL,
21-
taskDirectory: `${__dirname}/../tasks`,
22-
})
19+
20+
await boss.start()
21+
await boss.subscribe(COLLECT_CRED_QUEUE, collectCred)
2322

2423
await app.prepare()
2524
const server = express()
2625

2726
server.use('/api', (req,res,next)=>{
28-
req.runner = runner
27+
req.boss = boss
2928
next()
3029
})
3130

server/queue.js

Lines changed: 0 additions & 14 deletions
This file was deleted.

tasks/collectCred.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ const { mkdirp } = require('fs-extra')
22
const { promisify } = require('util')
33
const exec = promisify(require('child_process').exec);
44

5-
module.exports = async function(data){
6-
const target = data.target
7-
const githubToken = data.githubToken
8-
5+
module.exports = async function({data: {target, githubToken}}){
96
const dir = `${process.env.SOURCECRED_OUTPUT}`
107
await mkdirp(dir)
118

utils/constants.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
"GH_OAUTH_URL": "https://github.com/login/oauth/authorize",
33
"GH_ACCESS_TOKEN_URL": "https://github.com/login/oauth/access_token",
44
"GH_USER_URL": "https://api.github.com/user",
5-
"GH_INSTALLATION_REPOS_URL": "https://api.github.com/installation/repositories"
5+
"GH_INSTALLATION_REPOS_URL": "https://api.github.com/installation/repositories",
6+
"COLLECT_CRED_QUEUE": "collect-cred"
67
}

utils/installation.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,26 @@ export async function getInstallation({user, githubId}){
2929
return installation
3030
}
3131

32+
export async function getUserInstallationsByUserId(userId){
33+
let query = `
34+
query {
35+
userById(id: ${userId}) {
36+
id
37+
installationsByInstallationUserUserIdAndInstallationId {
38+
nodes {
39+
id
40+
name
41+
target
42+
}
43+
}
44+
}
45+
}
46+
`
47+
48+
let resData = await gqlQuery(query)
49+
return resData.data.userById.installationsByInstallationUserUserIdAndInstallationId.nodes
50+
}
51+
3252
async function createInstallationUser({userId, installationId}){
3353

3454
let query = `

0 commit comments

Comments
 (0)