graphql과 sql 의 비교를 통한 workflow...

도토리의수난·2021년 2월 1일
1
post-thumbnail

짜잔

우리?는 유저 아이디2인 사람이 쓴 글이 궁금해지기 시작했다

1.리포지토리를 왼손으로 비비고 오른손으로 비비거나...
2.한방쿼리를 짜거나
3.graphql이 등장... 그렇다

SELECT
	"user"."id" AS "id",
    "user","email_address" AS "email_address",
	"posts"."id" AS "posts_id",
    "posts"."body" AS "posts_body",
    "user"."first-name" AS "first_name",
    "user"."last_name" AS "last_name"
FROM accounts AS "user"
LEFT JOIN posts AS "posts" ON "user",id = "posts".author_id
WHERE "user".id = 2

in graph ql ...

{
	user(id: 2) {
    	fullName
        email
        posts {
        	id
            body
            comments {
            	body
                author { fullName }
            }
        }
    }
}

이렇게 쿼리를 하면 된다 마치
frontend: 프로그래머가 나 이러한 쿼리가 필요하오
manager: okay
뻥튀기인 나는 고통받는 나 : ...

저 쿼리를 보고 우리는 어떻게 해야하는가

리졸브 작성법
사실 리졸버만 구현하면 집에가도 될것 같은 느낌이 든 순간
집 못간다
그렇다
스키마와 리졸버에 모든 애매함을 넣어둔것이다
스키마엔 Query, Mutation, input, 기타등등이 있다
prisma란 녀석이랑 어떻게 어우러지는지 또한 황병기 미궁을 들으면서 같이 웃는다

미래에 나를 집에 보내줄 js 파일을 ACCESS 해보았다
완전한 권한이 나에게 주어질 것 같지 않은 그 희미한 파일 속에서 나는 보고야 말았다

type Query {
	퇴
	근
}

type Mutation {
	음
	모
	론
}
...
const resolvers = {
	...
	Query: {
		퇴:
		근:
    }
    Mutation: {
    		음:
		모:
        	론:
    }
    ...
}

그리고 여기엔

type User {
	id: ID!
    username: String
    firstLetterOfUsername: String
}

아니 네놈은 모델이 아니더냐 감히 여기가 어디라고
리졸버는 서버에 있는것이 아니었더냐 모든 것이 헷갈리기 시작한다
연봉은 0으로 수렴하고 집까지의 거리는 무한에 수렴하기 시작한다
컴퓨터 공학과를 클릭하고 있는 과거의 나에게 ACCESS 하고 싶다
나는 모스부호를 모른다
집에가고 싶은자는 모스부호를 배우자
여기는 서버가 맞다
하지만 모델놈은 prisma가 패고 있을 텐데 왜 여기서 훌럭대냐
ORM 녀석 <-> db
Apollo 녀석 <-> prisma
그렇다면 ?
결론은 loading.chrono: infinite
Apollo 녀석이 prisma와 통신같은것을 할려면?
JAVA는 JPA에서 알아서 해주는데
이것들은 동기화가 필요하나 보다(물주가 다른듯)
역시 노드의 세상은 n:M=>(재귀횟수=x)이다

그래서 포기한다
나는 middleware를 다룰줄 모른다
그래서 나도 중간서부터 침입한다

Query {
	movies : [Movie!]!
	...
}

가 있다
이건 뭔지는 안다 당연히 리스트를 불러오는 거겠지
내일정도 집에 갈 수 있다
하지만 페이지네이션하면 ?
페!이!지! 사흘뒤에 간다
여기서 쓰이는 느낌표는 Not Nullable이다
그러니까 지금 위에보이는 페!이!지!에서
{페!}만 요청하거나 {페!지!} graphql에서 이러면 안된다는 것이다
는 구라 된다 그게 바로 graphql의 장점이다
그럼 Not Nullable 은 왜 꺼냈냐 라고 물으신다면
그것은 entitiy의 특성이오 라고 말하겠다
엔티티에서 그렇게 하기로 정했다 그걸 통보하기 위함이다
코드주제에 제법이군
아무튼 저 쿼리로 돌아온 데이터 또한 기획에서 정의될 수 있다
마치 삼각형처럼 기획에서 편해진다
prisma 도 서버고 apollo 도 서버다 그안에 노드가 어떻게 꽃피는지 내가 알바냐
그렇다
prisma 는 db서버인가?
아 prisma 쓰기 싫어진다 이름만들으면 록맨 혹은 메가맨이라고도 불리우는 게임에서
나중에 끝에 스테이지가면 얻을 수 있는 무기처럼 생겨가지고
이뻐해줄라고 했더만 영 쓰임새가 좋지 못하다
ORM 만이 db신께 영접할 수 있는데
graphql 은 또 왜 자꾸 얼쩡거리고 apollo-server 인지 express인지 뭔지는
자꾸 헤벌레 거리고
prisma server 와 prisma client는 또 뭐야 ?
내 컴퓨터 월드에서는 prisma server만이 영접하셔야 하는데
너무하시네
아폴로 녀석은
프로트엔드에서 멋진 json 을 보내면 멋진 json 을 답하는 아이다
한마디로 알맹이는 없는 껍데기녀석이지
그렇다면 아폴로녀석은 프리즈마를 불러와서 프리즈마한테서 데이터를 얻어가야 하기 때문에
apollo-prisma 라는 서로 물주가 다른 녀석들의 만남이 필요한데
여기서 graphql 녀석은 어떻게 삼각관계를 이룬다는 것인가
바로 schema의 파일 형식은 graphql이라는 것이다 -> 응 아니야
schema.graphql , schema.ts, schema.prisma 가 있단다
여기서 헬게이트 오픈한것이였다
스키마님은 여러가지의미로 쓰이셨던 것이셨다
각각의 파일명에 대한 설명이 기록되어야 학습이 진행되겠다

profile
도가도비상도

0개의 댓글