[WIP] Switched from rest to GraphQL #162-2
This commit is contained in:
parent
4266db7e35
commit
6aca981fd1
@ -2,6 +2,7 @@ type Server implements TableQuery {
|
|||||||
id: ID
|
id: ID
|
||||||
discordId: String
|
discordId: String
|
||||||
name: String
|
name: String
|
||||||
|
iconURL: String
|
||||||
|
|
||||||
autoRoleCount: Int
|
autoRoleCount: Int
|
||||||
autoRoles(filter: AutoRoleFilter, page: Page, sort: Sort): [AutoRole]
|
autoRoles(filter: AutoRoleFilter, page: Page, sort: Sort): [AutoRole]
|
||||||
|
@ -35,6 +35,7 @@ class ServerQuery(DataQueryABC):
|
|||||||
self.set_field("id", self.resolve_id)
|
self.set_field("id", self.resolve_id)
|
||||||
self.set_field("discordId", self.resolve_discord_id)
|
self.set_field("discordId", self.resolve_discord_id)
|
||||||
self.set_field("name", self.resolve_name)
|
self.set_field("name", self.resolve_name)
|
||||||
|
self.set_field("iconURL", self.resolve_icon_url)
|
||||||
|
|
||||||
self.add_collection(
|
self.add_collection(
|
||||||
"autoRole", lambda server, *_: self._auto_roles.get_auto_roles_by_server_id(server.server_id)
|
"autoRole", lambda server, *_: self._auto_roles.get_auto_roles_by_server_id(server.server_id)
|
||||||
@ -54,3 +55,7 @@ class ServerQuery(DataQueryABC):
|
|||||||
def resolve_name(self, server: Server, *_):
|
def resolve_name(self, server: Server, *_):
|
||||||
guild = self._bot.get_guild(server.discord_server_id)
|
guild = self._bot.get_guild(server.discord_server_id)
|
||||||
return None if guild is None else guild.name
|
return None if guild is None else guild.name
|
||||||
|
|
||||||
|
def resolve_icon_url(self, server: Server, *_):
|
||||||
|
guild = self._bot.get_guild(server.discord_server_id)
|
||||||
|
return None if guild is None else guild.icon.url
|
||||||
|
13
kdb-web/src/app/models/graphql/queries.model.ts
Normal file
13
kdb-web/src/app/models/graphql/queries.model.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export class Queries {
|
||||||
|
static serverInfoQuery = `
|
||||||
|
query {
|
||||||
|
serverCount
|
||||||
|
servers {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
iconURL
|
||||||
|
userCount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
6
kdb-web/src/app/models/graphql/query.model.ts
Normal file
6
kdb-web/src/app/models/graphql/query.model.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { Server } from "../data/server.model";
|
||||||
|
|
||||||
|
export interface Query {
|
||||||
|
serverCount: number;
|
||||||
|
servers: Server[];
|
||||||
|
}
|
5
kdb-web/src/app/models/graphql/result.model.ts
Normal file
5
kdb-web/src/app/models/graphql/result.model.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { Query } from "./query.model";
|
||||||
|
|
||||||
|
export interface QueryResult {
|
||||||
|
data: any;
|
||||||
|
}
|
@ -3,13 +3,15 @@ import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
|
|||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
import { TranslateService } from "@ngx-translate/core";
|
import { TranslateService } from "@ngx-translate/core";
|
||||||
import { LazyLoadEvent } from "primeng/api";
|
import { LazyLoadEvent } from "primeng/api";
|
||||||
import { debounceTime } from "rxjs";
|
import { debounceTime, throwError } from "rxjs";
|
||||||
import { ConfirmationDialogService } from "src/app/services/confirmation-dialog/confirmation-dialog.service";
|
import { ConfirmationDialogService } from "src/app/services/confirmation-dialog/confirmation-dialog.service";
|
||||||
import { DataService } from "src/app/services/data/data.service";
|
import { DataService } from "src/app/services/data/data.service";
|
||||||
import { ServerService } from "src/app/services/data/server.service";
|
import { ServerService } from "src/app/services/data/server.service";
|
||||||
import { SpinnerService } from "src/app/services/spinner/spinner.service";
|
import { SpinnerService } from "src/app/services/spinner/spinner.service";
|
||||||
import { ToastService } from "src/app/services/toast/toast.service";
|
import { ToastService } from "src/app/services/toast/toast.service";
|
||||||
import { Server } from "../../../../../models/data/server.model";
|
import { Server } from "../../../../../models/data/server.model";
|
||||||
|
import { catchError } from "rxjs/operators";
|
||||||
|
import { Queries } from "../../../../../models/graphql/queries.model";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-dashboard',
|
selector: 'app-dashboard',
|
||||||
@ -71,14 +73,14 @@ export class DashboardComponent implements OnInit {
|
|||||||
|
|
||||||
async loadNextPage() {
|
async loadNextPage() {
|
||||||
this.spinnerService.showSpinner();
|
this.spinnerService.showSpinner();
|
||||||
// this.data.getFilteredServers(this.searchCriterions).pipe(catchError(err => {
|
this.data.query(Queries.serverInfoQuery).pipe(catchError(err => {
|
||||||
// this.spinnerService.hideSpinner();
|
this.spinnerService.hideSpinner();
|
||||||
// return throwError(() => err);
|
return throwError(() => err);
|
||||||
// })).subscribe(list => {
|
})).subscribe(data => {
|
||||||
// this.totalRecords = list.totalCount;
|
this.totalRecords = data.data.serverCount;
|
||||||
// this.servers = list.servers;
|
this.servers = data.data.servers;
|
||||||
// this.spinnerService.hideSpinner();
|
this.spinnerService.hideSpinner();
|
||||||
// });
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
nextPage(event: LazyLoadEvent) {
|
nextPage(event: LazyLoadEvent) {
|
||||||
|
@ -1,28 +1,30 @@
|
|||||||
import { HttpClient } from "@angular/common/http";
|
import { HttpClient, HttpHeaders } from "@angular/common/http";
|
||||||
import { Injectable } from "@angular/core";
|
import { Injectable } from "@angular/core";
|
||||||
import { SettingsService } from "../settings/settings.service";
|
import { SettingsService } from "../settings/settings.service";
|
||||||
|
import { Observable } from "rxjs";
|
||||||
|
import { QueryResult } from "../../models/graphql/result.model";
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: "root"
|
||||||
})
|
})
|
||||||
export class DataService {
|
export class DataService {
|
||||||
|
|
||||||
// serverQuery = this.apollo.watchQuery({
|
|
||||||
// query: gql`
|
|
||||||
// {
|
|
||||||
// serverCount
|
|
||||||
// servers {
|
|
||||||
// id
|
|
||||||
// name
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// `
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private appsettings: SettingsService,
|
private appsettings: SettingsService,
|
||||||
private http: HttpClient
|
private http: HttpClient
|
||||||
) {}
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
query(query: string, variables: object = {}): Observable<QueryResult> {
|
||||||
|
return this.http.post<QueryResult>(`${this.appsettings.getApiURL()}/api/graphql`,
|
||||||
|
JSON.stringify({
|
||||||
|
query, variables
|
||||||
|
}), {
|
||||||
|
headers: new HttpHeaders({
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user