Start on initial wizard
This commit is contained in:
parent
54929d6739
commit
7639a10d82
|
@ -38,9 +38,15 @@ const typeDefs = fs
|
||||||
import usersResolver from './resolvers/users'
|
import usersResolver from './resolvers/users'
|
||||||
import scannerResolver from './resolvers/scanner'
|
import scannerResolver from './resolvers/scanner'
|
||||||
import photosResolver from './resolvers/photos'
|
import photosResolver from './resolvers/photos'
|
||||||
|
import siteInfoResolver from './resolvers/siteInfo'
|
||||||
import { isRawImage, getImageCachePath } from './scanner/utils'
|
import { isRawImage, getImageCachePath } from './scanner/utils'
|
||||||
|
|
||||||
const resolvers = [usersResolver, scannerResolver, photosResolver]
|
const resolvers = [
|
||||||
|
usersResolver,
|
||||||
|
scannerResolver,
|
||||||
|
photosResolver,
|
||||||
|
siteInfoResolver,
|
||||||
|
]
|
||||||
|
|
||||||
const schema = makeAugmentedSchema({
|
const schema = makeAugmentedSchema({
|
||||||
typeDefs,
|
typeDefs,
|
||||||
|
@ -52,7 +58,13 @@ const schema = makeAugmentedSchema({
|
||||||
mutation: false,
|
mutation: false,
|
||||||
query: true,
|
query: true,
|
||||||
query: {
|
query: {
|
||||||
exclude: ['ScannerResult', 'AuthorizeResult', 'Subscription', 'PhotoURL'],
|
exclude: [
|
||||||
|
'ScannerResult',
|
||||||
|
'AuthorizeResult',
|
||||||
|
'Subscription',
|
||||||
|
'PhotoURL',
|
||||||
|
'SiteInfo',
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
resolvers: resolvers.reduce((prev, curr) => _.merge(prev, curr), {}),
|
resolvers: resolvers.reduce((prev, curr) => _.merge(prev, curr), {}),
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { neo4jgraphql } from 'neo4j-graphql-js'
|
||||||
|
|
||||||
|
async function initialSetup(driver) {
|
||||||
|
const session = driver.session()
|
||||||
|
|
||||||
|
await session.run(
|
||||||
|
`MERGE (info:SiteInfo) ON CREATE SET info = {initialSettings}`,
|
||||||
|
{
|
||||||
|
initialSettings: {
|
||||||
|
initialSetup: true,
|
||||||
|
signupEnabled: false,
|
||||||
|
defaultRoot: '/tmp',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const Query = {
|
||||||
|
async siteInfo(root, args, ctx, info) {
|
||||||
|
await initialSetup(ctx.driver)
|
||||||
|
|
||||||
|
return neo4jgraphql(root, args, ctx, info)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const Mutation = {
|
||||||
|
async initialSetupWizard(root, args, ctx, info) {
|
||||||
|
await initialSetup(ctx.driver)
|
||||||
|
|
||||||
|
const session = ctx.driver.session()
|
||||||
|
|
||||||
|
const result = await session.run(`MATCH (i:SiteInfo) RETURN i`)
|
||||||
|
|
||||||
|
const siteInfo = result.records[0].get('i').properties
|
||||||
|
|
||||||
|
if (siteInfo.initialSetup == false) {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
status: 'Has already been setup',
|
||||||
|
token: null,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
await session.run(
|
||||||
|
`MERGE (info:SiteInfo) ON CREATE SET info = {initialSettings}`,
|
||||||
|
{
|
||||||
|
initialSettings: {
|
||||||
|
initialSetup: true,
|
||||||
|
signupEnabled: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
status: 'Setup successful',
|
||||||
|
token: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
Query,
|
||||||
|
Mutation,
|
||||||
|
}
|
|
@ -124,6 +124,8 @@ export default async function scanUser({ driver, scanAlbum }, user) {
|
||||||
return { foundImage: foundImageOrAlbum, newAlbums }
|
return { foundImage: foundImageOrAlbum, newAlbums }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await fs.mkdirp(user.rootPath)
|
||||||
|
|
||||||
await scanPath(user.rootPath)
|
await scanPath(user.rootPath)
|
||||||
|
|
||||||
const session = driver.session()
|
const session = driver.session()
|
||||||
|
|
|
@ -62,6 +62,7 @@ type Photo {
|
||||||
type SiteInfo {
|
type SiteInfo {
|
||||||
signupEnabled: Boolean!
|
signupEnabled: Boolean!
|
||||||
initialSetup: Boolean!
|
initialSetup: Boolean!
|
||||||
|
defaultRoot: String! @hasRole(roles: [Admin])
|
||||||
}
|
}
|
||||||
|
|
||||||
type AuthorizeResult {
|
type AuthorizeResult {
|
||||||
|
@ -72,7 +73,7 @@ type AuthorizeResult {
|
||||||
|
|
||||||
type ScannerResult {
|
type ScannerResult {
|
||||||
finished: Boolean!
|
finished: Boolean!
|
||||||
error: Boolean!
|
success: Boolean!
|
||||||
errorMessage: String
|
errorMessage: String
|
||||||
progress: Float
|
progress: Float
|
||||||
}
|
}
|
||||||
|
@ -88,6 +89,12 @@ type Mutation {
|
||||||
@neo4j_ignore
|
@neo4j_ignore
|
||||||
|
|
||||||
scanAll: ScannerResult! @isAuthenticated @neo4j_ignore
|
scanAll: ScannerResult! @isAuthenticated @neo4j_ignore
|
||||||
|
|
||||||
|
initialSetupWizard(
|
||||||
|
username: String!
|
||||||
|
password: String!
|
||||||
|
defaultRoot: String!
|
||||||
|
): AuthorizeResult @neo4j_ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
type Query {
|
type Query {
|
||||||
|
|
Loading…
Reference in New Issue