Skip to content

Commit 3c8d42c

Browse files
committed
queries and mutations
1 parent f8b555c commit 3c8d42c

File tree

13 files changed

+116
-2
lines changed

13 files changed

+116
-2
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\GraphQL\Mutations;
4+
5+
use App\Models\SnippetTag;
6+
7+
final class AddTagToSnippet
8+
{
9+
/**
10+
* @param array{} $args
11+
*/
12+
public function __invoke($_, array $args)
13+
{
14+
$snippetTag = SnippetTag::create([
15+
"snippet_id" => $args["snippet_id"],
16+
"tag_id" => $args["tag_id"]
17+
]);
18+
return $snippetTag;
19+
}
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace App\GraphQL\Queries;
4+
5+
use App\Models\Snippet;
6+
7+
final class GetUserSnippets
8+
{
9+
/**
10+
* @param array{} $args
11+
*/
12+
public function __invoke($_, array $args)
13+
{
14+
$snippets = Snippet::where("owner_id", $args["userId"])->get();
15+
return $snippets;
16+
}
17+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\GraphQL\Queries;
4+
5+
use App\Models\Snippet;
6+
7+
final class SearchSnippetsWithOptions
8+
{
9+
/**
10+
* @param array{} $args
11+
*/
12+
public function __invoke($_, array $args)
13+
{
14+
$snippets = Snippet::where("title", "like", "%" . $args["keyword"] . "%")
15+
->orWhere("description", "like", "%" . $args["keyword"] . "%")
16+
->orWhere("code", "like", "%" . $args["keyword"] . "%")
17+
->get();
18+
return $snippets;
19+
}
20+
}

app/Models/SnippetTag.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Database\Eloquent\Factories\HasFactory;
66
use Illuminate\Database\Eloquent\Model;
7+
use Illuminate\Database\Eloquent\Relations\BelongsTo;
78

89
class SnippetTag extends Model
910
{
@@ -15,4 +16,14 @@ class SnippetTag extends Model
1516
];
1617

1718
protected $table = "snippet_tag";
19+
20+
public function snippet(): BelongsTo
21+
{
22+
return $this->belongsTo(Snippet::class);
23+
}
24+
25+
public function tag(): BelongsTo
26+
{
27+
return $this->belongsTo(Tag::class);
28+
}
1829
}

bootstrap/app.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
App\Exceptions\Handler::class
4242
);
4343

44+
// $app->configure('lighthouse');
45+
46+
// $app->register(\Nuwave\Lighthouse\LighthouseServiceProvider::class);
47+
4448
/*
4549
|--------------------------------------------------------------------------
4650
| Return The Application

graphql/comment.graphql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
extend type Mutation {
2+
createComment(text: String!, user_id: ID!, snippet_id: ID!): Comment! @create
3+
deleteComment(id: ID! @eq): Comment @delete
4+
editComment(id: ID! @eq, text: String!): Comment @update
5+
}

graphql/review.graphql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
extend type Mutation {
2+
updateReview(id: ID!, text: String, rating: Int): Review @update
3+
deleteReview(id: ID! @eq): Review @delete
4+
}

graphql/schema.graphql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
#import type.graphql
22
#import user.graphql
3-
#import snippet.graphql
3+
#import snippet.graphql
4+
#import snippet_tag.graphql
5+
#import comment.graphql
6+
#import review.graphql
7+
#import tag.graphql

graphql/snippet.graphql

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
11
extend type Query {
2-
2+
getSnippet(id: ID! @eq): Snippet @find
3+
getUserSnippets(userId: ID!): [Snippet]!
4+
searchSnippetsWithOptions(keyword: String!): [Snippet]!
5+
getSnippetByTitle(title: String! @eq): [Snippet]! @find
6+
}
7+
8+
extend type Mutation {
9+
createSnippet(title: String!, description: String!, code: String!, language: String!, owner_id: ID!): Snippet! @create
10+
deleteSnippet(id: ID! @eq): Snippet @delete
11+
rateSnippet(snippet_id: ID!, rating: Int!, text: String!, user_id: ID!): Review @create
312
}

graphql/snippet_tag.graphql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
extend type Mutation {
2+
addTagToSnippet(snippet_id: ID!, tag_id: ID!): SnippetTag
3+
removeTagFromSnippet(id: ID!): SnippetTag @delete
4+
}

0 commit comments

Comments
 (0)