Skip to content

Instantly share code, notes, and snippets.

View susimsek's full-sized avatar
🎯
Focusing

Şuayb Şimşek susimsek

🎯
Focusing
View GitHub Profile
@susimsek
susimsek / ProductOverview.js
Last active August 27, 2022 10:38
Graphql Product Overview Page
const ProductOverview = () => {
const { id } = useParams();
const { loading, data, error } = useProductAndReviewsQuery({
variables: {
id
},
})
@susimsek
susimsek / ProductAndReviews.graphql
Created August 27, 2022 10:34
Product Microservice Query with Reviews
query ProductAndReviews($id: ID!) {
product(id: $id) {
id
name
description,
reviews {
id,
text,
starRating
}
@susimsek
susimsek / codegen.yml
Created August 27, 2022 10:24
Graphql Code Generator Config
overwrite: true
schema: "http://localhost:4000"
documents: "src/**/!(*.d).{ts,tsx,graphql}"
generates:
src/generated/graphql-types.ts:
plugins:
- "typescript"
- "typescript-operations"
- "typescript-react-apollo"
config:
@susimsek
susimsek / result.json
Created August 27, 2022 10:10
Apollo Gateway Api Result
{
"data": {
"product": {
"id": "1",
"name": "Saturn V",
"description": "The Original Super Heavy-Lift Rocket!",
"createdDate": "2022-08-27T13:01:54+03:00",
"reviews": [
{
"id": "1020",
@susimsek
susimsek / query.graphql
Created August 27, 2022 10:09
Apollo Gateway Query
query Products {
product(id: 1) {
id
name
description,
createdDate,
reviews{
id,
text,
starRating
@susimsek
susimsek / ReviewController.kt
Created August 27, 2022 09:45
Graphql Review Microservice
@Controller
class ReviewController(
private val reviewService: ReviewService
) {
@BatchMapping
fun reviews(products: MutableList<Product>): Mono<Map<Product, List<Review>>> {
val productIds = products.map {it.id}.toMutableList()
val result = reviewService.getReviewsByProductIdsIn(productIds)
return result
@susimsek
susimsek / schema.graphqls
Created August 27, 2022 09:43
Review Microservice Schema
type Product @key(fields: "id") @extends {
id: ID! @external
reviews: [Review!]!
}
type Review {
id: ID!,
text: String
starRating: Int!
}
@susimsek
susimsek / schema.graphqls
Created August 27, 2022 09:37
Graphql Product Micro Service Schema
scalar OffsetDateTime
type Query {
product(id: ID!): Product
products: [Product!]!
}
type Product @key(fields: "id") {
id: ID!
name: String!
@susimsek
susimsek / gateway.js
Created August 27, 2022 09:09
Apollo Federation
const startGateway = (config, apolloGatewayConfig) => {
const corsOptions = {
origin: config.CORS_ALLOWED_ORIGINS.split(", "),
credentials: config.CORS_ALLOW_CREDENTIALS
}
const gateway = new ApolloGateway(apolloGatewayConfig);
const server = new ApolloServer({
gateway,
@susimsek
susimsek / AcceptHeaderResolver.java
Created April 12, 2022 12:52
Spring Boot i18n Customer LocaleResolver
public class AcceptHeaderResolver extends AcceptHeaderLocaleResolver {
private static final String LOCALE_PARAM = "locale";
@Override
public Locale resolveLocale(HttpServletRequest request) {
String localeParam = request.getParameter(LOCALE_PARAM);
if (StringUtils.hasText(localeParam)) {
Locale locale = StringUtils.parseLocaleString(localeParam);
this.setDefaultLocale(locale);