Skip to content

Commit

Permalink
add unsafe actions (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
imperfect-fourth committed Sep 12, 2024
1 parent c8bd16f commit 255e933
Show file tree
Hide file tree
Showing 8 changed files with 209 additions and 53 deletions.
2 changes: 1 addition & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func NewClient(gqlEndpoint string, opt *ClientOpts) *Client {
return c
}

func (c *Client) do(q Queryable) (*bytes.Buffer, error) {
func (c *Client) Do(q Queryable) (*bytes.Buffer, error) {
reqObj := graphqlRequest{
Query: q.Query(),
Variables: q.Variables(),
Expand Down
34 changes: 17 additions & 17 deletions eywa.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type graphqlRequest struct {
Variables map[string]interface{} `json:"variables"`
}

type graphqlError struct {
type GraphQLError struct {
Message string `json:"message"`
Extensions map[string]interface{} `json:"extensions"`
}
Expand All @@ -33,7 +33,7 @@ type FieldName[M Model] interface {
}
type FieldNameArr[M Model, FN FieldName[M]] []FN

func (fa FieldNameArr[M, FN]) marshalGQL() string {
func (fa FieldNameArr[M, FN]) MarshalGQL() string {
buf := bytes.NewBufferString("")
for i, f := range fa {
if i > 0 {
Expand All @@ -53,8 +53,8 @@ func (f RawField) GetName() string {
return f.Name
}
func (f RawField) GetValue() string {
if val, ok := f.Value.(gqlMarshaler); ok {
return val.marshalGQL()
if val, ok := f.Value.(GQLMarshaler); ok {
return val.MarshalGQL()
}
val, _ := json.Marshal(f.Value)
vt := reflect.TypeOf(f.Value)
Expand Down Expand Up @@ -83,8 +83,8 @@ func (f ModelField[M]) GetValue() string {
return fmt.Sprintf("$%s", var_.name)
}

if val, ok := f.Value.(gqlMarshaler); ok {
return val.marshalGQL()
if val, ok := f.Value.(GQLMarshaler); ok {
return val.MarshalGQL()
}

val, _ := json.Marshal(f.Value)
Expand All @@ -110,7 +110,7 @@ type Field[M Model] interface {

type fieldArr[M Model, F Field[M]] []F

func (fs fieldArr[M, MF]) marshalGQL() string {
func (fs fieldArr[M, MF]) MarshalGQL() string {
buf := bytes.NewBufferString("")
for i, f := range fs {
if i > 0 {
Expand Down Expand Up @@ -139,8 +139,8 @@ type QuerySkeleton[M Model, FN FieldName[M], F Field[M]] struct {
queryArgs[M, FN, F]
}

func (qs QuerySkeleton[M, FN, F]) marshalGQL() string {
return fmt.Sprintf("%s%s", qs.ModelName, qs.queryArgs.marshalGQL())
func (qs QuerySkeleton[M, FN, F]) MarshalGQL() string {
return fmt.Sprintf("%s%s", qs.ModelName, qs.queryArgs.MarshalGQL())
}

func Get[M Model, MP ModelPtr[M]]() GetQueryBuilder[M, ModelFieldName[M], ModelField[M]] {
Expand Down Expand Up @@ -182,8 +182,8 @@ func (sq GetQueryBuilder[M, FN, F]) Where(w *WhereExpr) GetQueryBuilder[M, FN, F
return sq
}

func (sq GetQueryBuilder[M, FN, F]) marshalGQL() string {
return sq.QuerySkeleton.marshalGQL()
func (sq GetQueryBuilder[M, FN, F]) MarshalGQL() string {
return sq.QuerySkeleton.MarshalGQL()
}

func (sq GetQueryBuilder[M, FN, F]) Select(field FN, fields ...FN) GetQuery[M, FN, F] {
Expand All @@ -198,19 +198,19 @@ type GetQuery[M Model, FN FieldName[M], F Field[M]] struct {
fields []FN
}

func (sq GetQuery[M, FN, F]) marshalGQL() string {
func (sq GetQuery[M, FN, F]) MarshalGQL() string {
return fmt.Sprintf(
"%s {\n%s\n}",
sq.sq.marshalGQL(),
FieldNameArr[M, FN](sq.fields).marshalGQL(),
sq.sq.MarshalGQL(),
FieldNameArr[M, FN](sq.fields).MarshalGQL(),
)
}

func (sq GetQuery[M, FN, F]) Query() string {
return fmt.Sprintf(
"query get_%s {\n%s\n}",
sq.sq.ModelName,
sq.marshalGQL(),
sq.MarshalGQL(),
)
}

Expand All @@ -219,14 +219,14 @@ func (sq GetQuery[M, FN, F]) Variables() map[string]interface{} {
}

func (sq GetQuery[M, FN, F]) Exec(client *Client) ([]M, error) {
respBytes, err := client.do(sq)
respBytes, err := client.Do(sq)
if err != nil {
return nil, err
}

type graphqlResponse struct {
Data map[string][]M `json:"data"`
Errors []graphqlError `json:"errors"`
Errors []GraphQLError `json:"errors"`
}

respObj := graphqlResponse{}
Expand Down
8 changes: 4 additions & 4 deletions marshal_gql.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package eywa

type gqlMarshaler interface {
marshalGQL() string
type GQLMarshaler interface {
MarshalGQL() string
}

type HasuraEnum string

func (he HasuraEnum) marshalGQL() string {
func (he HasuraEnum) MarshalGQL() string {
_ = x(he)
return string(he)
}

func x(q gqlMarshaler) string {
func x(q GQLMarshaler) string {
return "abcd"
}
38 changes: 19 additions & 19 deletions query_arg.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type queryArgs[M Model, FN FieldName[M], F Field[M]] struct {
set *set[M, F]
}

func (qa queryArgs[M, FN, F]) marshalGQL() string {
func (qa queryArgs[M, FN, F]) MarshalGQL() string {
var args []string
args = appendArg(args, qa.limit)
args = appendArg(args, qa.offset)
Expand All @@ -31,7 +31,7 @@ func appendArg(arr []string, arg queryArg) []string {
if arg == nil || reflect.ValueOf(arg).IsNil() {
return arr
}
s := arg.marshalGQL()
s := arg.MarshalGQL()
if s == "" {
return arr
}
Expand All @@ -40,15 +40,15 @@ func appendArg(arr []string, arg queryArg) []string {

type queryArg interface {
queryArgName() string
marshalGQL() string
MarshalGQL() string
}

type limit int

func (l limit) queryArgName() string {
return "limit"
}
func (l limit) marshalGQL() string {
func (l limit) MarshalGQL() string {
return fmt.Sprintf("%s: %d", l.queryArgName(), l)
}

Expand All @@ -57,7 +57,7 @@ type offset int
func (o offset) queryArgName() string {
return "offset"
}
func (o offset) marshalGQL() string {
func (o offset) MarshalGQL() string {
return fmt.Sprintf("%s: %d", o.queryArgName(), o)
}

Expand All @@ -68,7 +68,7 @@ type distinctOn[M Model, FN FieldName[M]] struct {
func (do distinctOn[M, FN]) queryArgName() string {
return "distinct_on"
}
func (do distinctOn[M, FN]) marshalGQL() string {
func (do distinctOn[M, FN]) MarshalGQL() string {
return fmt.Sprintf("%s: %s", do.queryArgName(), do.field)
}

Expand All @@ -79,8 +79,8 @@ type where struct {
func (w where) queryArgName() string {
return "where"
}
func (w where) marshalGQL() string {
return fmt.Sprintf("%s: %s", w.queryArgName(), w.WhereExpr.marshalGQL())
func (w where) MarshalGQL() string {
return fmt.Sprintf("%s: %s", w.queryArgName(), w.WhereExpr.MarshalGQL())
}

type set[M Model, F Field[M]] struct {
Expand All @@ -90,11 +90,11 @@ type set[M Model, F Field[M]] struct {
func (s set[M, F]) queryArgName() string {
return "_set"
}
func (s set[M, F]) marshalGQL() string {
func (s set[M, F]) MarshalGQL() string {
if s.fieldArr == nil || len(s.fieldArr) == 0 {

Check failure on line 94 in query_arg.go

View workflow job for this annotation

GitHub Actions / lint

S1009: should omit nil check; len() for github.com/imperfect-fourth/eywa.fieldArr[M, F] is defined as zero (gosimple)
return ""
}
return fmt.Sprintf("%s: {%s}", s.queryArgName(), s.fieldArr.marshalGQL())
return fmt.Sprintf("%s: {%s}", s.queryArgName(), s.fieldArr.MarshalGQL())
}

type operator string
Expand Down Expand Up @@ -165,18 +165,18 @@ type WhereExpr struct {

type whereArr []*WhereExpr

func (wa whereArr) marshalGQL() string {
func (wa whereArr) MarshalGQL() string {
stringArr := make([]string, 0, len(wa))
for _, whereExpr := range wa {
expr := whereExpr.marshalGQL()
expr := whereExpr.MarshalGQL()
if expr != "" {
stringArr = append(stringArr, expr)
}
}
return strings.Join(stringArr, ", ")
}

func (w *WhereExpr) marshalGQL() string {
func (w *WhereExpr) MarshalGQL() string {
if w == nil {
return ""
}
Expand All @@ -185,17 +185,17 @@ func (w *WhereExpr) marshalGQL() string {
}
var stringArr []string

andExpr := w.and.marshalGQL()
andExpr := w.and.MarshalGQL()
if andExpr != "" {
stringArr = append(stringArr, fmt.Sprintf("_and: [%s]", andExpr))
}

orExpr := w.or.marshalGQL()
orExpr := w.or.MarshalGQL()
if orExpr != "" {
stringArr = append(stringArr, fmt.Sprintf("_or: [%s]", orExpr))
}

notExpr := w.not.marshalGQL()
notExpr := w.not.MarshalGQL()
if notExpr != "" {
stringArr = append(stringArr, fmt.Sprintf("_not: %s", notExpr))
}
Expand All @@ -212,7 +212,7 @@ type OrderByExpr struct {
field string
}

func (ob OrderByExpr) marshalGQL() string {
func (ob OrderByExpr) MarshalGQL() string {
return fmt.Sprintf("%s: %s", ob.field, ob.order)
}

Expand Down Expand Up @@ -241,13 +241,13 @@ func (oba orderBy) queryArgName() string {
return "order_by"
}

func (oba orderBy) marshalGQL() string {
func (oba orderBy) MarshalGQL() string {
if len(oba) == 0 {
return ""
}
stringArr := make([]string, 0, len(oba))
for _, ob := range oba {
expr := ob.marshalGQL()
expr := ob.MarshalGQL()
if expr != "" {
stringArr = append(stringArr, expr)
}
Expand Down
6 changes: 3 additions & 3 deletions query_vars.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ type queryVar struct {
value TypedValue
}

func (v queryVar) marshalGQL() string {
func (v queryVar) MarshalGQL() string {
return fmt.Sprintf("$%s: %s", v.name, v.value.Type())
}

type queryVarArr []queryVar

func (vs queryVarArr) marshalGQL() string {
func (vs queryVarArr) MarshalGQL() string {
if len(vs) == 0 {
return ""
}
Expand All @@ -25,7 +25,7 @@ func (vs queryVarArr) marshalGQL() string {
if i > 0 {
buf.WriteString(", ")
}
buf.WriteString(v.marshalGQL())
buf.WriteString(v.MarshalGQL())
}
buf.WriteString(")")
return buf.String()
Expand Down
Loading

0 comments on commit 255e933

Please sign in to comment.