Skip to content

Commit

Permalink
New create signatures mutation
Browse files Browse the repository at this point in the history
  • Loading branch information
joonashak committed Oct 20, 2024
1 parent 068cce2 commit d8bb609
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 49 deletions.
8 changes: 1 addition & 7 deletions server/src/dev-tools/dev-tools.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { FolderModule } from "../entities/folder/folder.module";
import { SignatureModule } from "../entities/signature/signature.module";
import { DevToolsController } from "./dev-tools.controller";
import { DevToolsService } from "./dev-tools.service";
import { MockConnectionGraphService } from "./mock-data-services/mock-connection-graph.service";
import { MockFolderService } from "./mock-data-services/mock-folder.service";
import { MockUserService } from "./mock-data-services/mock-user.service";

Expand All @@ -19,12 +18,7 @@ const options = {
SsoSessionModule,
SessionModule,
],
providers: [
DevToolsService,
MockUserService,
MockFolderService,
MockConnectionGraphService,
],
providers: [DevToolsService, MockUserService, MockFolderService],
controllers: [DevToolsController],
};

Expand Down
3 changes: 0 additions & 3 deletions server/src/dev-tools/dev-tools.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { Connection } from "mongoose";
import { AppDataService } from "../app-data/app-data.service";
import { HolenavCharacter } from "../entities/character/character.model";
import users from "./data/users";
import { MockConnectionGraphService } from "./mock-data-services/mock-connection-graph.service";
import { MockFolderService } from "./mock-data-services/mock-folder.service";
import { MockUserService } from "./mock-data-services/mock-user.service";

Expand All @@ -16,7 +15,6 @@ export class DevToolsService {
private appDataService: AppDataService,
private mockUserService: MockUserService,
private mockFolderService: MockFolderService,
private mockConnectionGraphService: MockConnectionGraphService,
) {}

/** Clear entire database. */
Expand All @@ -31,7 +29,6 @@ export class DevToolsService {
await this.appDataService.initialize();
await this.mockFolderService.mock();
await this.mockUserService.mock();
await this.mockConnectionGraphService.mock();
}

async getMockUsers() {
Expand Down

This file was deleted.

7 changes: 3 additions & 4 deletions server/src/entities/signature/signature-paste.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,10 @@ export class SignaturePasteService {
folderId,
);

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const addableSigs = this.getAddableSigs(paste, existingSigs);
const added = await this.signatureService.createSignatures(
addableSigs,
folderId,
);
// FIXME:
const added = await this.signatureService.createSignatures([]);

const updateableSigs = this.getUpdateableSigs(paste, existingSigs);
const updated = await this.signatureService.updateSignatures(
Expand Down
14 changes: 7 additions & 7 deletions server/src/entities/signature/signature.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,25 @@ import SigType from "./enums/sig-type.enum";
registerEnumType(SigType, { name: "SigType" });

@ObjectType()
@Schema({ timestamps: true })
@Schema({ timestamps: true, validateBeforeSave: true })
export class Signature {
@Field()
id: string;

@Field()
@Prop()
@Prop({ required: true })
eveId: string;

@Field(() => SigType)
@Prop()
@Prop({ required: true })
type: SigType;

@Field()
@Prop()
@Prop({ required: true })
name: string;

@Field()
@Prop()
@Prop({ required: true })
systemName: string;

@Field(() => Connection, { nullable: true })
Expand All @@ -36,15 +36,15 @@ export class Signature {
@Prop({ default: Date.now })
createdAt: Date;

@Field()
@Field({ defaultValue: "" })
@Prop()
createdBy: string;

@Field(() => Date)
@Prop({ default: Date.now })
updatedAt: Date;

@Field()
@Field({ defaultValue: "" })
@Prop()
updatedBy: string;
}
Expand Down
14 changes: 12 additions & 2 deletions server/src/entities/signature/signature.module.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
import { CloneBayUserService } from "@joonashak/nestjs-clone-bay";
import { Module } from "@nestjs/common";
import { MongooseModule } from "@nestjs/mongoose";
import { FolderAccessControlModule } from "../../access-control/folder/folder-access-control.module";
import { FolderModule } from "../folder/folder.module";
import { FolderService } from "../folder/folder.service";
import { SignaturePasteService } from "./signature-paste.service";
import { Signature, SignatureSchema } from "./signature.model";
import { SignatureResolver } from "./signature.resolver";
import { SignatureService } from "./signature.service";

@Module({
imports: [FolderModule, FolderAccessControlModule],
exports: [SignatureService],
imports: [
FolderModule,
FolderAccessControlModule,
MongooseModule.forFeature([
{ name: Signature.name, schema: SignatureSchema },
]),
],
providers: [
SignatureResolver,
SignatureService,
SignaturePasteService,
FolderService,
CloneBayUserService,
],
exports: [SignatureService, MongooseModule],
})
export class SignatureModule {}
19 changes: 14 additions & 5 deletions server/src/entities/signature/signature.resolver.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { RequireAuthentication } from "@joonashak/nestjs-clone-bay";
import {
CloneBayUserService,
RequireAuthentication,
UserId,
} from "@joonashak/nestjs-clone-bay";
import { Args, Mutation, Query, Resolver } from "@nestjs/graphql";
import { FolderAction } from "../../access-control/folder/folder-role/folder-action.enum";
import { RequireFolderAccess } from "../../access-control/folder/require-folder-access.decorator";
Expand All @@ -15,18 +19,20 @@ import { SignatureService } from "./signature.service";
@Resolver()
export class SignatureResolver {
constructor(
private sigService: SignatureService,
private signatureService: SignatureService,
private sigPasteService: SignaturePasteService,
private userService: CloneBayUserService,
) {}

@RequireAuthentication()
@Mutation(() => [Signature])
async createSignatures(
@Args({ name: "signatures", type: () => [CreateSignature] })
signatures: CreateSignature[],
@UserId() userId: string,
): Promise<Signature[]> {
console.log(signatures);
return [];
const user = await this.userService.findById(userId);
return this.signatureService.createSignatures(signatures, user);
}

@RequireFolderAccess(FolderAction.Read)
Expand All @@ -35,7 +41,10 @@ export class SignatureResolver {
@Args("systemName") systemName: string,
@Args("folderId") folderId: string,
): Promise<Signature[]> {
const signatures = await this.sigService.getBySystem(systemName, folderId);
const signatures = await this.signatureService.getBySystem(
systemName,
folderId,
);
return signatures;
}

Expand Down
28 changes: 24 additions & 4 deletions server/src/entities/signature/signature.service.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { User } from "@joonashak/nestjs-clone-bay";
import { Injectable } from "@nestjs/common";
import { InjectModel } from "@nestjs/mongoose";
import { Model } from "mongoose";
import { CreateSignature } from "./dto/add-signatures.dto";
import { Signature } from "./signature.model";

@Injectable()
export class SignatureService {
constructor() {}
constructor(
@InjectModel(Signature.name) private signatureModel: Model<Signature>,
) {}

async getBySystem(
systemName: string,
Expand All @@ -13,11 +19,25 @@ export class SignatureService {
return [];
}

async createSignature(
signature: CreateSignature,
user?: User,
): Promise<Signature> {
const created = await this.signatureModel.create({
...signature,
connection: null,
createdBy: user?.main.name || "",
});
return created;
}

async createSignatures(
signatures: unknown[],
folderId: string,
signatures: CreateSignature[],
user?: User,
): Promise<Signature[]> {
return [];
return Promise.all(
signatures.map((sig) => this.createSignature(sig, user)),
);
}

async updateSignatures(
Expand Down

0 comments on commit d8bb609

Please sign in to comment.