github.com/RevenueMonster/sqlike@v1.0.6/sqlike/context.go (about)

     1  package sqlike
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/RevenueMonster/sqlike/sqlike/primitive"
     7  )
     8  
     9  const contextResolutionKey = "_sqlike_context_query"
    10  
    11  func (tb *Database) InjectResolution(ctx context.Context, queries ...primitive.Group) context.Context {
    12  	query := extractResolution(ctx)
    13  	query = append(query, queries...)
    14  	return context.WithValue(ctx, contextResolutionKey, query)
    15  }
    16  
    17  func (tb *Table) InjectResolution(ctx context.Context, queries ...primitive.Group) context.Context {
    18  	query := extractResolution(ctx)
    19  	query = append(query, queries...)
    20  	return context.WithValue(ctx, contextResolutionKey, query)
    21  }
    22  
    23  func extractResolution(ctx context.Context) []primitive.Group {
    24  	iQuery := ctx.Value(contextResolutionKey)
    25  	query, ok := iQuery.([]primitive.Group)
    26  	if ok {
    27  		return query
    28  	}
    29  	return []primitive.Group{}
    30  }