diff --git a/prisma/dev.db b/prisma/dev.db index b04aa6c..63e144b 100644 Binary files a/prisma/dev.db and b/prisma/dev.db differ diff --git a/prisma/dev.db-journal b/prisma/dev.db-journal new file mode 100644 index 0000000..ffd9f7e Binary files /dev/null and b/prisma/dev.db-journal differ diff --git a/prisma/migrations/20210924101547_add_profile/migration.sql b/prisma/migrations/20210924101547_add_profile/migration.sql new file mode 100644 index 0000000..0db742f --- /dev/null +++ b/prisma/migrations/20210924101547_add_profile/migration.sql @@ -0,0 +1,20 @@ +-- RedefineTables +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_Profile" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "bio" TEXT NOT NULL, + "avatar" TEXT, + "userId" INTEGER NOT NULL, + "enabled" BOOLEAN NOT NULL DEFAULT true, + CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE +); +INSERT INTO "new_Profile" ("avatar", "bio", "enabled", "id", "userId") SELECT "avatar", "bio", "enabled", "id", "userId" FROM "Profile"; +DROP TABLE "Profile"; +ALTER TABLE "new_Profile" RENAME TO "Profile"; +CREATE UNIQUE INDEX "Profile_userId_key" ON "Profile"("userId"); +PRAGMA foreign_key_check; +PRAGMA foreign_keys=ON; + +-- RedefineIndex +DROP INDEX "User.email_unique"; +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/src/User/UserService.ts b/src/User/UserService.ts index f34844c..e8807d8 100644 --- a/src/User/UserService.ts +++ b/src/User/UserService.ts @@ -4,8 +4,8 @@ import UserRequest from "../Model/UserRequest"; const prisma = new PrismaClient(); -function isProfileExistByEmail(email: string) { - const exist = prisma.profile.count({ +async function isProfileExistByEmail(email: string) { + const exist = await prisma.profile.count({ where: { user: { email: email, @@ -13,7 +13,7 @@ function isProfileExistByEmail(email: string) { }, }); - return exist.then((c) => c > 0).catch((e) => 0); + return exist > 0; } async function findOneProfileByEmail(email: string) { @@ -30,15 +30,15 @@ async function findOneProfileByEmail(email: string) { return profile; } - -function isExistByEmail(email: string) { - const exist = prisma.user.count({ + +async function isExistByEmail(email: string) { + const exist = await prisma.user.count({ where: { email: email, }, }); - return exist.then((c) => c > 0).catch((e) => 0); + return exist > 0; } async function findOneByEmail( @@ -59,7 +59,7 @@ async function findOneByEmail( } async function createUser(request: UserRequest) { - if (isExistByEmail(request.email)) { + if (await isExistByEmail(request.email)) { return findOneByEmail(request.email); } @@ -76,7 +76,7 @@ async function createUser(request: UserRequest) { } async function createProfile(user: User, request: ProfileRequest) { - if (isProfileExistByEmail(user.email)) { + if (await isProfileExistByEmail(user.email)) { return findOneProfileByEmail(user.email); } diff --git a/tests/user.test.ts b/tests/user.test.ts index 89b4ba6..bf05bbc 100644 --- a/tests/user.test.ts +++ b/tests/user.test.ts @@ -15,13 +15,13 @@ describe("user", function () { const bio = "Software Developer"; // create user test - it("createUser", async (done) => { + it("createUser", (done) => { // create user - await createUser({ + createUser({ email: email, name: name, }) - .then(async (user) => { + .then((user) => { if (user == null) { throw Error("user is null"); } @@ -31,7 +31,7 @@ describe("user", function () { expect(name).toBe(user.name); // create profile - await createProfile(user, { + createProfile(user, { bio: "Software Developer", }) .then((profile) => { @@ -50,8 +50,8 @@ describe("user", function () { }); // check user test - it("checkUser", async (done) => { - await findOneByEmail(email) + it("checkUser", (done) => { + findOneByEmail(email) .then((user) => { if (user == null) { throw Error("user is null"); @@ -66,8 +66,8 @@ describe("user", function () { }); // check profile included user test - it("checkProfileUser", async (done) => { - await findOneProfileByEmail(email) + it("checkProfileUser", (done) => { + findOneProfileByEmail(email) .then((profile) => { if (profile == null) { throw Error("profile is null"); @@ -83,8 +83,8 @@ describe("user", function () { }); // try to finish - afterAll(async (done) => { - await prisma.$disconnect(); + afterAll((done) => { + prisma.$disconnect(); done(); });