Skip to content

Commit e88a458

Browse files
committed
fix: service inputs for mongoose 6
1 parent d4b2919 commit e88a458

File tree

5 files changed

+102
-19
lines changed

5 files changed

+102
-19
lines changed

service-inputs.patch

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
diff --git a/src/models/product.model.ts b/src/models/product.model.ts
2+
index 4b83d65..03d548f 100644
3+
--- a/src/models/product.model.ts
4+
+++ b/src/models/product.model.ts
5+
@@ -4,12 +4,15 @@ import { UserDocument } from "./user.model";
6+
7+
const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789", 10);
8+
9+
-export interface ProductDocument extends mongoose.Document {
10+
+export interface ProductInput {
11+
user: UserDocument["_id"];
12+
title: string;
13+
description: string;
14+
price: number;
15+
image: string;
16+
+}
17+
+
18+
+export interface ProductDocument extends ProductInput, mongoose.Document {
19+
createdAt: Date;
20+
updatedAt: Date;
21+
}
22+
diff --git a/src/models/user.model.ts b/src/models/user.model.ts
23+
index ce6ea8f..37dfbc0 100644
24+
--- a/src/models/user.model.ts
25+
+++ b/src/models/user.model.ts
26+
@@ -2,10 +2,13 @@ import mongoose from "mongoose";
27+
import bcrypt from "bcrypt";
28+
import config from "config";
29+
30+
-export interface UserDocument extends mongoose.Document {
31+
+export interface UserInput {
32+
email: string;
33+
name: string;
34+
password: string;
35+
+}
36+
+
37+
+export interface UserDocument extends UserInput, mongoose.Document {
38+
createdAt: Date;
39+
updatedAt: Date;
40+
comparePassword(candidatePassword: string): Promise<Boolean>;
41+
diff --git a/src/service/product.service.ts b/src/service/product.service.ts
42+
index 2dad4ca..b382b4b 100644
43+
--- a/src/service/product.service.ts
44+
+++ b/src/service/product.service.ts
45+
@@ -1,14 +1,10 @@
46+
-import {
47+
- DocumentDefinition,
48+
- FilterQuery,
49+
- QueryOptions,
50+
- UpdateQuery,
51+
-} from "mongoose";
52+
-import ProductModel, { ProductDocument } from "../models/product.model";
53+
+import { FilterQuery, QueryOptions, UpdateQuery } from "mongoose";
54+
+import ProductModel, {
55+
+ ProductDocument,
56+
+ ProductInput,
57+
+} from "../models/product.model";
58+
59+
-export async function createProduct(
60+
- input: DocumentDefinition<Omit<ProductDocument, "createdAt" | "updatedAt">>
61+
-) {
62+
+export async function createProduct(input: ProductInput) {
63+
return ProductModel.create(input);
64+
}
65+
66+
diff --git a/src/service/user.service.ts b/src/service/user.service.ts
67+
index 7dee694..af904d0 100644
68+
--- a/src/service/user.service.ts
69+
+++ b/src/service/user.service.ts
70+
@@ -1,12 +1,8 @@
71+
-import { DocumentDefinition, FilterQuery } from "mongoose";
72+
+import { FilterQuery } from "mongoose";
73+
import { omit } from "lodash";
74+
-import UserModel, { UserDocument } from "../models/user.model";
75+
+import UserModel, { UserDocument, UserInput } from "../models/user.model";
76+
77+
-export async function createUser(
78+
- input: DocumentDefinition<
79+
- Omit<UserDocument, "createdAt" | "updatedAt" | "comparePassword">
80+
- >
81+
-) {
82+
+export async function createUser(input: UserInput) {
83+
try {
84+
const user = await UserModel.create(input);
85+

src/models/product.model.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ import { UserDocument } from "./user.model";
44

55
const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789", 10);
66

7-
export interface ProductDocument extends mongoose.Document {
7+
export interface ProductInput {
88
user: UserDocument["_id"];
99
title: string;
1010
description: string;
1111
price: number;
1212
image: string;
13+
}
14+
15+
export interface ProductDocument extends ProductInput, mongoose.Document {
1316
createdAt: Date;
1417
updatedAt: Date;
1518
}

src/models/user.model.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ import mongoose from "mongoose";
22
import bcrypt from "bcrypt";
33
import config from "config";
44

5-
export interface UserDocument extends mongoose.Document {
5+
export interface UserInput {
66
email: string;
77
name: string;
88
password: string;
9+
}
10+
11+
export interface UserDocument extends UserInput, mongoose.Document {
912
createdAt: Date;
1013
updatedAt: Date;
1114
comparePassword(candidatePassword: string): Promise<Boolean>;

src/service/product.service.ts

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
import {
2-
DocumentDefinition,
3-
FilterQuery,
4-
QueryOptions,
5-
UpdateQuery,
6-
} from "mongoose";
7-
import ProductModel, { ProductDocument } from "../models/product.model";
1+
import { FilterQuery, QueryOptions, UpdateQuery } from "mongoose";
2+
import ProductModel, {
3+
ProductDocument,
4+
ProductInput,
5+
} from "../models/product.model";
86

9-
export async function createProduct(
10-
input: DocumentDefinition<Omit<ProductDocument, "createdAt" | "updatedAt">>
11-
) {
7+
export async function createProduct(input: ProductInput) {
128
return ProductModel.create(input);
139
}
1410

src/service/user.service.ts

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import { DocumentDefinition, FilterQuery } from "mongoose";
1+
import { FilterQuery } from "mongoose";
22
import { omit } from "lodash";
3-
import UserModel, { UserDocument } from "../models/user.model";
3+
import UserModel, { UserDocument, UserInput } from "../models/user.model";
44

5-
export async function createUser(
6-
input: DocumentDefinition<
7-
Omit<UserDocument, "createdAt" | "updatedAt" | "comparePassword">
8-
>
9-
) {
5+
export async function createUser(input: UserInput) {
106
try {
117
const user = await UserModel.create(input);
128

0 commit comments

Comments
 (0)