mirror of
https://github.com/kremalicious/umami.git
synced 2024-11-15 17:55:08 +01:00
Merge branch 'dev' of https://github.com/umami-software/umami into dev
This commit is contained in:
commit
4cb5a14de9
@ -36,7 +36,7 @@ export default async (
|
|||||||
|
|
||||||
const { username, password, id } = req.body;
|
const { username, password, id } = req.body;
|
||||||
|
|
||||||
const existingUser = await getUser({ username });
|
const existingUser = await getUser({ username }, { showDeleted: true });
|
||||||
|
|
||||||
if (existingUser) {
|
if (existingUser) {
|
||||||
return badRequest(res, 'User already exists');
|
return badRequest(res, 'User already exists');
|
||||||
|
@ -3,7 +3,7 @@ import { uuid } from 'lib/crypto';
|
|||||||
import prisma from 'lib/prisma';
|
import prisma from 'lib/prisma';
|
||||||
|
|
||||||
export async function getTeamWebsite(teamId: string, userId: string): Promise<TeamWebsite> {
|
export async function getTeamWebsite(teamId: string, userId: string): Promise<TeamWebsite> {
|
||||||
return prisma.client.TeamWebsite.findFirst({
|
return prisma.client.teamWebsite.findFirst({
|
||||||
where: {
|
where: {
|
||||||
teamId,
|
teamId,
|
||||||
userId,
|
userId,
|
||||||
@ -12,7 +12,7 @@ export async function getTeamWebsite(teamId: string, userId: string): Promise<Te
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getTeamWebsites(teamId: string): Promise<TeamWebsite[]> {
|
export async function getTeamWebsites(teamId: string): Promise<TeamWebsite[]> {
|
||||||
return prisma.client.TeamWebsite.findMany({
|
return prisma.client.teamWebsite.findMany({
|
||||||
where: {
|
where: {
|
||||||
teamId,
|
teamId,
|
||||||
},
|
},
|
||||||
@ -28,7 +28,7 @@ export async function createTeamWebsite(
|
|||||||
teamId: string,
|
teamId: string,
|
||||||
websiteId: string,
|
websiteId: string,
|
||||||
): Promise<TeamWebsite> {
|
): Promise<TeamWebsite> {
|
||||||
return prisma.client.TeamWebsite.create({
|
return prisma.client.teamWebsite.create({
|
||||||
data: {
|
data: {
|
||||||
id: uuid(),
|
id: uuid(),
|
||||||
userId,
|
userId,
|
||||||
@ -37,11 +37,3 @@ export async function createTeamWebsite(
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteTeamWebsite(TeamWebsiteId: string): Promise<TeamWebsite> {
|
|
||||||
return prisma.client.teamUser.delete({
|
|
||||||
where: {
|
|
||||||
id: TeamWebsiteId,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
@ -4,13 +4,13 @@ import prisma from 'lib/prisma';
|
|||||||
import { Website, User } from 'lib/types';
|
import { Website, User } from 'lib/types';
|
||||||
|
|
||||||
export async function getUser(
|
export async function getUser(
|
||||||
where: Prisma.UserWhereUniqueInput,
|
where: Prisma.UserWhereInput | Prisma.UserWhereUniqueInput,
|
||||||
options: { includePassword?: boolean } = {},
|
options: { includePassword?: boolean; showDeleted?: boolean } = {},
|
||||||
): Promise<User> {
|
): Promise<User> {
|
||||||
const { includePassword = false } = options;
|
const { includePassword = false, showDeleted = false } = options;
|
||||||
|
|
||||||
return prisma.client.user.findUnique({
|
return prisma.client.user.findFirst({
|
||||||
where,
|
where: { ...where, ...(showDeleted ? {} : { deletedAt: null }) },
|
||||||
select: {
|
select: {
|
||||||
id: true,
|
id: true,
|
||||||
username: true,
|
username: true,
|
||||||
@ -62,6 +62,7 @@ export async function getUserWebsites(userId: string): Promise<Website[]> {
|
|||||||
return prisma.client.website.findMany({
|
return prisma.client.website.findMany({
|
||||||
where: {
|
where: {
|
||||||
userId,
|
userId,
|
||||||
|
deletedAt: null,
|
||||||
},
|
},
|
||||||
orderBy: [
|
orderBy: [
|
||||||
{
|
{
|
||||||
@ -111,6 +112,7 @@ export async function deleteUser(
|
|||||||
userId: string,
|
userId: string,
|
||||||
): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Prisma.BatchPayload, User]> {
|
): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Prisma.BatchPayload, User]> {
|
||||||
const { client } = prisma;
|
const { client } = prisma;
|
||||||
|
const cloudMode = process.env.CLOUD_MODE;
|
||||||
|
|
||||||
const websites = await client.website.findMany({
|
const websites = await client.website.findMany({
|
||||||
where: { userId },
|
where: { userId },
|
||||||
@ -130,19 +132,29 @@ export async function deleteUser(
|
|||||||
client.session.deleteMany({
|
client.session.deleteMany({
|
||||||
where: { websiteId: { in: websiteIds } },
|
where: { websiteId: { in: websiteIds } },
|
||||||
}),
|
}),
|
||||||
client.website.updateMany({
|
cloudMode
|
||||||
|
? client.website.updateMany({
|
||||||
data: {
|
data: {
|
||||||
deletedAt: new Date(),
|
deletedAt: new Date(),
|
||||||
},
|
},
|
||||||
where: { id: { in: websiteIds } },
|
where: { id: { in: websiteIds } },
|
||||||
|
})
|
||||||
|
: client.website.deleteMany({
|
||||||
|
where: { id: { in: websiteIds } },
|
||||||
}),
|
}),
|
||||||
client.user.update({
|
cloudMode
|
||||||
|
? client.user.update({
|
||||||
data: {
|
data: {
|
||||||
deletedAt: new Date(),
|
deletedAt: new Date(),
|
||||||
},
|
},
|
||||||
where: {
|
where: {
|
||||||
id: userId,
|
id: userId,
|
||||||
},
|
},
|
||||||
|
})
|
||||||
|
: client.user.delete({
|
||||||
|
where: {
|
||||||
|
id: userId,
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
.then(async data => {
|
.then(async data => {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { Prisma, Website } from '@prisma/client';
|
import { Prisma, Website } from '@prisma/client';
|
||||||
import cache from 'lib/cache';
|
import cache from 'lib/cache';
|
||||||
import prisma from 'lib/prisma';
|
import prisma from 'lib/prisma';
|
||||||
import { runQuery, CLICKHOUSE, PRISMA } from 'lib/db';
|
|
||||||
|
|
||||||
export async function getWebsite(where: Prisma.WebsiteWhereUniqueInput): Promise<Website> {
|
export async function getWebsite(where: Prisma.WebsiteWhereUniqueInput): Promise<Website> {
|
||||||
return prisma.client.website.findUnique({
|
return prisma.client.website.findUnique({
|
||||||
@ -69,17 +68,11 @@ export async function resetWebsite(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteWebsite(websiteId: string) {
|
export async function deleteWebsite(
|
||||||
return runQuery({
|
|
||||||
[PRISMA]: () => deleteWebsiteRelationalQuery(websiteId),
|
|
||||||
[CLICKHOUSE]: () => deleteWebsiteClickhouseQuery(websiteId),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function deleteWebsiteRelationalQuery(
|
|
||||||
websiteId,
|
websiteId,
|
||||||
): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
|
): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
|
||||||
const { client, transaction } = prisma;
|
const { client, transaction } = prisma;
|
||||||
|
const cloudMode = process.env.CLOUD_MODE;
|
||||||
|
|
||||||
return transaction([
|
return transaction([
|
||||||
client.websiteEvent.deleteMany({
|
client.websiteEvent.deleteMany({
|
||||||
@ -88,7 +81,14 @@ async function deleteWebsiteRelationalQuery(
|
|||||||
client.session.deleteMany({
|
client.session.deleteMany({
|
||||||
where: { websiteId },
|
where: { websiteId },
|
||||||
}),
|
}),
|
||||||
client.website.delete({
|
cloudMode
|
||||||
|
? prisma.client.website.update({
|
||||||
|
data: {
|
||||||
|
deletedAt: new Date(),
|
||||||
|
},
|
||||||
|
where: { id: websiteId },
|
||||||
|
})
|
||||||
|
: client.website.delete({
|
||||||
where: { id: websiteId },
|
where: { id: websiteId },
|
||||||
}),
|
}),
|
||||||
]).then(async data => {
|
]).then(async data => {
|
||||||
@ -99,12 +99,3 @@ async function deleteWebsiteRelationalQuery(
|
|||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function deleteWebsiteClickhouseQuery(websiteId): Promise<Website> {
|
|
||||||
return prisma.client.website.update({
|
|
||||||
data: {
|
|
||||||
deletedAt: new Date(),
|
|
||||||
},
|
|
||||||
where: { id: websiteId },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user