~edwargix/git.sr.ht

9d12b369784bc4c31873cbb7bea09055ba38865b — Adnan Maolood 2 years ago 052afba
api/graph/repos: Rename from clones
3 files changed, 15 insertions(+), 22 deletions(-)

M api/graph/schema.resolvers.go
R api/{clones/middleware.go => repos/middleware.go}
M api/server.go
M api/graph/schema.resolvers.go => api/graph/schema.resolvers.go +2 -2
@@ 28,10 28,10 @@ import (
	"git.sr.ht/~sircmpwn/core-go/server"
	"git.sr.ht/~sircmpwn/core-go/valid"
	corewebhooks "git.sr.ht/~sircmpwn/core-go/webhooks"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/clones"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/graph/api"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/graph/model"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/loaders"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/repos"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/webhooks"
	"github.com/99designs/gqlgen/graphql"
	sq "github.com/Masterminds/squirrel"


@@ 228,7 228,7 @@ func (r *mutationResolver) CreateRepository(ctx context.Context, name string, vi
				cloneURL = &repo.Path
			}

			clones.Schedule(ctx, repo.ID, gitrepo, *cloneURL)
			repos.Clone(ctx, repo.ID, gitrepo, *cloneURL)
		}

		webhooks.DeliverRepoEvent(ctx, model.WebhookEventRepoCreated, &repo)

R api/clones/middleware.go => api/repos/middleware.go +8 -16
@@ 1,4 1,4 @@
package clones
package repos

import (
	"context"


@@ 12,24 12,16 @@ import (
	"github.com/go-git/go-git/v5"
)

type ClonesQueue struct {
	Queue *work.Queue
}

func NewQueue() *ClonesQueue {
	return &ClonesQueue{work.NewQueue("clones")}
}

type contextKey struct {
	name string
}

var clonesCtxKey = &contextKey{"clones"}
var ctxKey = &contextKey{"repos"}

func Middleware(queue *ClonesQueue) func(next http.Handler) http.Handler {
func Middleware(queue *work.Queue) func(next http.Handler) http.Handler {
	return func(next http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			ctx := context.WithValue(r.Context(), clonesCtxKey, queue)
			ctx := context.WithValue(r.Context(), ctxKey, queue)
			r = r.WithContext(ctx)
			next.ServeHTTP(w, r)
		})


@@ 37,10 29,10 @@ func Middleware(queue *ClonesQueue) func(next http.Handler) http.Handler {
}

// Schedules a clone.
func Schedule(ctx context.Context, repoID int, repo *git.Repository, cloneURL string) {
	queue, ok := ctx.Value(clonesCtxKey).(*ClonesQueue)
func Clone(ctx context.Context, repoID int, repo *git.Repository, cloneURL string) {
	queue, ok := ctx.Value(ctxKey).(*work.Queue)
	if !ok {
		panic("No clones worker for this context")
		panic("No repos worker for this context")
	}
	task := work.NewTask(func(ctx context.Context) error {
		defer func() {


@@ 74,6 66,6 @@ func Schedule(ctx context.Context, repoID int, repo *git.Repository, cloneURL st
		}
		return nil
	})
	queue.Queue.Enqueue(task)
	queue.Enqueue(task)
	log.Printf("Enqueued clone of %s", cloneURL)
}

M api/server.go => api/server.go +5 -4
@@ 5,13 5,14 @@ import (

	"git.sr.ht/~sircmpwn/core-go/config"
	"git.sr.ht/~sircmpwn/core-go/server"
	work "git.sr.ht/~sircmpwn/dowork"
	"github.com/99designs/gqlgen/graphql"

	"git.sr.ht/~sircmpwn/git.sr.ht/api/clones"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/graph"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/graph/api"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/graph/model"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/loaders"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/repos"
	"git.sr.ht/~sircmpwn/git.sr.ht/api/webhooks"
)



@@ 31,7 32,7 @@ func main() {
		scopes[i] = s.String()
	}

	clonesQueue := clones.NewQueue()
	reposQueue := work.NewQueue("repos")
	webhookQueue := webhooks.NewQueue(schema)
	legacyWebhooks := webhooks.NewLegacyQueue()



@@ 39,11 40,11 @@ func main() {
		WithDefaultMiddleware().
		WithMiddleware(
			loaders.Middleware,
			clones.Middleware(clonesQueue),
			repos.Middleware(reposQueue),
			webhooks.Middleware(webhookQueue),
			webhooks.LegacyMiddleware(legacyWebhooks),
		).
		WithSchema(schema, scopes).
		WithQueues(clonesQueue.Queue, webhookQueue.Queue, legacyWebhooks.Queue).
		WithQueues(reposQueue, webhookQueue.Queue, legacyWebhooks.Queue).
		Run()
}