// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.

package tangled

// schema: sh.tangled.git.mergeCommit

import (
	"context"

	"github.com/bluesky-social/indigo/lex/util"
)

const (
	GitMergeCommitNSID = "sh.tangled.git.mergeCommit"
)

// GitMergeCommit_Input is the input argument to a sh.tangled.git.mergeCommit call.
type GitMergeCommit_Input struct {
	// mergeCommit: Merge commit content. Used when merge commit is created.
	MergeCommit *GitMergeCommit_Input_MergeCommit `json:"mergeCommit,omitempty" cborgen:"mergeCommit,omitempty"`
	Source      *GitMergeCommit_Input_Source      `json:"source" cborgen:"source"`
	Style       string                            `json:"style" cborgen:"style"`
	Target      *GitMergeCommit_Input_Target      `json:"target" cborgen:"target"`
}

// Merge commit content. Used when merge commit is created.
type GitMergeCommit_Input_MergeCommit struct {
	Author  *GitDefs_Signature `json:"author,omitempty" cborgen:"author,omitempty"`
	Message *string            `json:"message,omitempty" cborgen:"message,omitempty"`
}

type GitMergeCommit_Input_Source struct {
	// commit: Head commit ID to merge
	Commit string `json:"commit" cborgen:"commit"`
	// repo: DID of source git repository
	Repo string `json:"repo" cborgen:"repo"`
}

type GitMergeCommit_Input_Target struct {
	// branch: Target branch to merge into
	Branch string `json:"branch" cborgen:"branch"`
	// repo: DID of target git repository
	Repo string `json:"repo" cborgen:"repo"`
}

// GitMergeCommit calls the XRPC method "sh.tangled.git.mergeCommit".
func GitMergeCommit(ctx context.Context, c util.LexClient, input *GitMergeCommit_Input) error {
	if err := c.LexDo(ctx, util.Procedure, "application/json", "sh.tangled.git.mergeCommit", nil, input, nil); err != nil {
		return err
	}

	return nil
}
