create: async()

in src/server/api/repo.js [30:66]


    create: async (req) => {
        req.args.token = req.args.token || req.user.token
        utils.validateArgs(req.args, REPOCREATESCHEMA, true)

        const repoArgs = {
            repo: req.args.repo,
            owner: req.args.owner,
            token: req.args.token
        }
        let dbRepo
        try {
            dbRepo = await repo.get(repoArgs)
            if (!dbRepo) {
                throw 'New repo should be created'
            }
            try {
                const ghRepo = await repo.getGHRepo(repoArgs)
                if (ghRepo && ghRepo.id != dbRepo.repoId) {
                    throw 'Repo id has changed'
                }
            } catch (error) {
                return repo.update(req.args)
            }
        } catch (error) {
            dbRepo = await repo.create(req.args)

            if (dbRepo.gist) {
                try {
                    webhook.create(req)
                } catch (error) {
                    logger.error(`Could not create a webhook for the new repo ${new Error(error)}`)
                }
            }
            return dbRepo
        }
        throw 'This repository is already linked.'
    },