Compare commits

..

4 commits

Author SHA1 Message Date
Francis Cao
b0f38b266b truncate large legend labels
Some checks are pending
Node.js CI / build (postgresql, 18.18, 10) (push) Waiting to run
Closes #3813
2025-12-02 14:44:10 -08:00
Mike Cao
e7cb613cec Merge remote-tracking branch 'origin/dev' into dev 2025-12-02 13:47:01 -08:00
Mike Cao
170821e2f9 Populate teams on login.
Closes #3796
2025-12-02 13:45:49 -08:00
Francis Cao
935517ce3a add cascading deletes to revenue/segment table
Closes #3798
2025-12-02 09:41:46 -08:00
3 changed files with 51 additions and 32 deletions

View file

@ -7,7 +7,7 @@ import { checkPassword } from '@/lib/password';
import redis from '@/lib/redis';
import { parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { getUserByUsername } from '@/queries/prisma';
import { getAllUserTeams, getUserByUsername } from '@/queries/prisma';
export async function POST(request: Request) {
const schema = z.object({
@ -39,8 +39,10 @@ export async function POST(request: Request) {
token = createSecureToken({ userId: user.id, role }, secret());
}
const teams = await getAllUserTeams(id);
return json({
token,
user: { id, username, role, createdAt, isAdmin: role === ROLES.admin },
user: { id, username, role, createdAt, isAdmin: role === ROLES.admin, teams },
});
}

View file

@ -22,7 +22,12 @@ export function Legend({
return (
<Row key={text} onClick={() => onClick(item)}>
<StatusLight color={color.alpha(color.alpha() + 0.2).toHex()}>
<Text size="2" color={hidden ? 'disabled' : undefined} wrap="nowrap">
<Text
size="2"
color={hidden ? 'disabled' : undefined}
truncate={true}
style={{ maxWidth: '300px' }}
>
{text}
</Text>
</StatusLight>

View file

@ -137,6 +137,9 @@ export async function resetWebsite(websiteId: string) {
return transaction(
[
client.revenue.deleteMany({
where: { websiteId },
}),
client.eventData.deleteMany({
where: { websiteId },
}),
@ -175,35 +178,44 @@ export async function deleteWebsite(websiteId: string) {
const { client, transaction } = prisma;
const cloudMode = !!process.env.CLOUD_MODE;
return transaction([
client.eventData.deleteMany({
where: { websiteId },
}),
client.sessionData.deleteMany({
where: { websiteId },
}),
client.websiteEvent.deleteMany({
where: { websiteId },
}),
client.session.deleteMany({
where: { websiteId },
}),
client.report.deleteMany({
where: {
websiteId,
},
}),
cloudMode
? client.website.update({
data: {
deletedAt: new Date(),
},
where: { id: websiteId },
})
: client.website.delete({
where: { id: websiteId },
}),
]).then(async data => {
return transaction(
[
client.revenue.deleteMany({
where: { websiteId },
}),
client.eventData.deleteMany({
where: { websiteId },
}),
client.sessionData.deleteMany({
where: { websiteId },
}),
client.websiteEvent.deleteMany({
where: { websiteId },
}),
client.session.deleteMany({
where: { websiteId },
}),
client.report.deleteMany({
where: { websiteId },
}),
client.segment.deleteMany({
where: { websiteId },
}),
cloudMode
? client.website.update({
data: {
deletedAt: new Date(),
},
where: { id: websiteId },
})
: client.website.delete({
where: { id: websiteId },
}),
],
{
timeout: 30000,
},
).then(async data => {
if (cloudMode) {
await redis.client.del(`website:${websiteId}`);
}