- graph, dotenv read
- graph, cors and secure header - web, urql client basic setup
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
import { gql } from '@urql/svelte';
|
||||
export const QryMe = gql`
|
||||
query Me {
|
||||
me {
|
||||
id
|
||||
displayName
|
||||
}
|
||||
}
|
||||
`;
|
51
graph/d.ts
51
graph/d.ts
@@ -1,51 +0,0 @@
|
||||
export type Maybe<T> = T | null;
|
||||
export type InputMaybe<T> = Maybe<T>;
|
||||
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
|
||||
export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };
|
||||
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
|
||||
/** All built-in and custom scalars, mapped to their actual values */
|
||||
export type Scalars = {
|
||||
ID: { input: string; output: string; }
|
||||
String: { input: string; output: string; }
|
||||
Boolean: { input: boolean; output: boolean; }
|
||||
Int: { input: number; output: number; }
|
||||
Float: { input: number; output: number; }
|
||||
Any: { input: any; output: any; }
|
||||
Map: { input: any; output: any; }
|
||||
Time: { input: any; output: any; }
|
||||
Void: { input: any; output: any; }
|
||||
};
|
||||
|
||||
export type AuthUser = {
|
||||
__typename?: 'AuthUser';
|
||||
displayName: Scalars['String']['output'];
|
||||
email: Scalars['String']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
roleID: Scalars['Int']['output'];
|
||||
};
|
||||
|
||||
export type Mutation = {
|
||||
__typename?: 'Mutation';
|
||||
login: Scalars['Boolean']['output'];
|
||||
logout: Scalars['Boolean']['output'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationLoginArgs = {
|
||||
email: Scalars['String']['input'];
|
||||
username: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
heartBeat: Scalars['Boolean']['output'];
|
||||
/** me, is current AuthUser info */
|
||||
me?: Maybe<AuthUser>;
|
||||
};
|
||||
|
||||
export type MeQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type MeQuery = { __typename?: 'Query', me?: { __typename?: 'AuthUser', id: string, displayName: string } | null };
|
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/99designs/gqlgen/graphql/handler"
|
||||
"github.com/99designs/gqlgen/graphql/handler/extension"
|
||||
"github.com/99designs/gqlgen/graphql/playground"
|
||||
"github.com/vektah/gqlparser/gqlerror"
|
||||
"github.com/vektah/gqlparser/v2/gqlerror"
|
||||
"gitserver.in/patialtech/rano/graph/generated"
|
||||
"gitserver.in/patialtech/rano/pkg/logger"
|
||||
)
|
||||
@@ -149,4 +149,5 @@ func GraphiQL(queryEndpoint string) func(w http.ResponseWriter, r *http.Request)
|
||||
func Query(w http.ResponseWriter, r *http.Request) {
|
||||
// srv.ServeHTTP(w, r.WithContext(userCtx(r)))
|
||||
srv.ServeHTTP(w, r)
|
||||
|
||||
}
|
||||
|
@@ -1,33 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"gitserver.in/patialtech/mux"
|
||||
"gitserver.in/patialtech/mux/middleware"
|
||||
"gitserver.in/patialtech/rano/config"
|
||||
"gitserver.in/patialtech/rano/graph"
|
||||
"gitserver.in/patialtech/rano/pkg/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
r := mux.NewRouter()
|
||||
// CORS
|
||||
r.Use(middleware.CORS(middleware.CORSOption{
|
||||
AllowedHeaders: []string{"Content-Type"},
|
||||
MaxAge: 60,
|
||||
}))
|
||||
// Secure Headers
|
||||
r.Use(middleware.Helmet(middleware.HelmetOption{
|
||||
ContentSecurityPolicy: middleware.CSP{
|
||||
ScriptSrc: []string{"self", "https://cdn.jsdelivr.net", "unsafe-inline"},
|
||||
},
|
||||
}))
|
||||
|
||||
// graphiql
|
||||
r.Get("/graphiql", graph.GraphiQL("/query"))
|
||||
r.GET("/graphiql", graph.GraphiQL("/query"))
|
||||
// graph query
|
||||
r.Post("/query", graph.Query)
|
||||
r.POST("/query", graph.Query)
|
||||
|
||||
// catch all
|
||||
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
r.GET("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte("hello there"))
|
||||
})
|
||||
|
||||
port := os.Getenv("GRAPH_PORT")
|
||||
if port == "" {
|
||||
port = "4001"
|
||||
}
|
||||
|
||||
r.Serve(func(srv *http.Server) error {
|
||||
srv.Addr = ":" + port
|
||||
srv.Addr = fmt.Sprintf(":%d", config.Read().GraphPort)
|
||||
logger.Info("graph server listening on %s", srv.Addr)
|
||||
return srv.ListenAndServe()
|
||||
})
|
||||
|
Reference in New Issue
Block a user