style: auto-format codebase with Prettier

Applied formatting to 1487+ files using pnpm format:write
  - TypeScript/JavaScript files
  - Svelte components
  - Astro pages
  - JSON configs
  - Markdown docs

  13 files still need manual review (Astro JSX comments)
This commit is contained in:
Wuesteon 2025-11-27 18:33:16 +01:00
parent 0241f5554c
commit d36b321d9d
3952 changed files with 661498 additions and 739751 deletions

View file

@ -1,31 +1,21 @@
import {
pgTable,
uuid,
text,
boolean,
timestamp,
jsonb,
index,
} from 'drizzle-orm/pg-core';
import { pgTable, uuid, text, boolean, timestamp, jsonb, index } from 'drizzle-orm/pg-core';
import { users } from './users.js';
export const accounts = pgTable(
'accounts',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
owner: uuid('owner')
.references(() => users.id)
.notNull(),
isActive: boolean('is_active').default(true),
planType: text('plan_type', { enum: ['free', 'team', 'enterprise'] }).default(
'free'
),
settings: jsonb('settings'),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [index('accounts_owner_idx').on(table.owner)]
'accounts',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
owner: uuid('owner')
.references(() => users.id)
.notNull(),
isActive: boolean('is_active').default(true),
planType: text('plan_type', { enum: ['free', 'team', 'enterprise'] }).default('free'),
settings: jsonb('settings'),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [index('accounts_owner_idx').on(table.owner)]
);
export type Account = typeof accounts.$inferSelect;

View file

@ -2,31 +2,31 @@ import { pgTable, uuid, text, timestamp, index } from 'drizzle-orm/pg-core';
import { links } from './links.js';
export const clicks = pgTable(
'clicks',
{
id: uuid('id').primaryKey().defaultRandom(),
linkId: uuid('link_id')
.references(() => links.id, { onDelete: 'cascade' })
.notNull(),
ipHash: text('ip_hash'),
userAgent: text('user_agent'),
referer: text('referer'),
browser: text('browser'),
deviceType: text('device_type'),
os: text('os'),
country: text('country'),
city: text('city'),
clickedAt: timestamp('clicked_at').defaultNow().notNull(),
utmSource: text('utm_source'),
utmMedium: text('utm_medium'),
utmCampaign: text('utm_campaign'),
createdAt: timestamp('created_at').defaultNow().notNull(),
},
(table) => [
index('clicks_link_id_idx').on(table.linkId),
index('clicks_clicked_at_idx').on(table.clickedAt),
index('clicks_country_idx').on(table.country),
]
'clicks',
{
id: uuid('id').primaryKey().defaultRandom(),
linkId: uuid('link_id')
.references(() => links.id, { onDelete: 'cascade' })
.notNull(),
ipHash: text('ip_hash'),
userAgent: text('user_agent'),
referer: text('referer'),
browser: text('browser'),
deviceType: text('device_type'),
os: text('os'),
country: text('country'),
city: text('city'),
clickedAt: timestamp('clicked_at').defaultNow().notNull(),
utmSource: text('utm_source'),
utmMedium: text('utm_medium'),
utmCampaign: text('utm_campaign'),
createdAt: timestamp('created_at').defaultNow().notNull(),
},
(table) => [
index('clicks_link_id_idx').on(table.linkId),
index('clicks_clicked_at_idx').on(table.clickedAt),
index('clicks_country_idx').on(table.country),
]
);
export type Click = typeof clicks.$inferSelect;

View file

@ -8,11 +8,11 @@ export { tags, linkTags, type Tag, type NewTag, type LinkTag, type NewLinkTag }
// Relations
export {
usersRelations,
linksRelations,
clicksRelations,
tagsRelations,
linkTagsRelations,
accountsRelations,
workspacesRelations,
usersRelations,
linksRelations,
clicksRelations,
tagsRelations,
linkTagsRelations,
accountsRelations,
workspacesRelations,
} from './relations.js';

View file

@ -1,49 +1,49 @@
import {
pgTable,
uuid,
text,
boolean,
integer,
timestamp,
jsonb,
index,
pgTable,
uuid,
text,
boolean,
integer,
timestamp,
jsonb,
index,
} from 'drizzle-orm/pg-core';
import { users } from './users.js';
import { accounts } from './accounts.js';
import { workspaces } from './workspaces.js';
export const links = pgTable(
'links',
{
id: uuid('id').primaryKey().defaultRandom(),
shortCode: text('short_code').unique().notNull(),
customCode: text('custom_code'),
originalUrl: text('original_url').notNull(),
title: text('title'),
description: text('description'),
userId: uuid('user_id').references(() => users.id, { onDelete: 'cascade' }),
isActive: boolean('is_active').default(true),
password: text('password'), // hashed
maxClicks: integer('max_clicks'),
expiresAt: timestamp('expires_at'),
clickCount: integer('click_count').default(0),
qrCodeUrl: text('qr_code_url'),
tags: jsonb('tags').$type<string[]>(),
utmSource: text('utm_source'),
utmMedium: text('utm_medium'),
utmCampaign: text('utm_campaign'),
accountOwner: uuid('account_owner').references(() => accounts.id),
workspaceId: uuid('workspace_id').references(() => workspaces.id),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('links_user_id_idx').on(table.userId),
index('links_short_code_idx').on(table.shortCode),
index('links_workspace_id_idx').on(table.workspaceId),
index('links_account_owner_idx').on(table.accountOwner),
index('links_is_active_idx').on(table.isActive),
]
'links',
{
id: uuid('id').primaryKey().defaultRandom(),
shortCode: text('short_code').unique().notNull(),
customCode: text('custom_code'),
originalUrl: text('original_url').notNull(),
title: text('title'),
description: text('description'),
userId: uuid('user_id').references(() => users.id, { onDelete: 'cascade' }),
isActive: boolean('is_active').default(true),
password: text('password'), // hashed
maxClicks: integer('max_clicks'),
expiresAt: timestamp('expires_at'),
clickCount: integer('click_count').default(0),
qrCodeUrl: text('qr_code_url'),
tags: jsonb('tags').$type<string[]>(),
utmSource: text('utm_source'),
utmMedium: text('utm_medium'),
utmCampaign: text('utm_campaign'),
accountOwner: uuid('account_owner').references(() => accounts.id),
workspaceId: uuid('workspace_id').references(() => workspaces.id),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('links_user_id_idx').on(table.userId),
index('links_short_code_idx').on(table.shortCode),
index('links_workspace_id_idx').on(table.workspaceId),
index('links_account_owner_idx').on(table.accountOwner),
index('links_is_active_idx').on(table.isActive),
]
);
export type Link = typeof links.$inferSelect;

View file

@ -7,46 +7,46 @@ import { accounts } from './accounts.js';
import { workspaces } from './workspaces.js';
export const usersRelations = relations(users, ({ many }) => ({
links: many(links),
tags: many(tags),
ownedAccounts: many(accounts),
ownedWorkspaces: many(workspaces),
links: many(links),
tags: many(tags),
ownedAccounts: many(accounts),
ownedWorkspaces: many(workspaces),
}));
export const linksRelations = relations(links, ({ one, many }) => ({
user: one(users, { fields: [links.userId], references: [users.id] }),
account: one(accounts, {
fields: [links.accountOwner],
references: [accounts.id],
}),
workspace: one(workspaces, {
fields: [links.workspaceId],
references: [workspaces.id],
}),
clicks: many(clicks),
linkTags: many(linkTags),
user: one(users, { fields: [links.userId], references: [users.id] }),
account: one(accounts, {
fields: [links.accountOwner],
references: [accounts.id],
}),
workspace: one(workspaces, {
fields: [links.workspaceId],
references: [workspaces.id],
}),
clicks: many(clicks),
linkTags: many(linkTags),
}));
export const clicksRelations = relations(clicks, ({ one }) => ({
link: one(links, { fields: [clicks.linkId], references: [links.id] }),
link: one(links, { fields: [clicks.linkId], references: [links.id] }),
}));
export const tagsRelations = relations(tags, ({ one, many }) => ({
user: one(users, { fields: [tags.userId], references: [users.id] }),
linkTags: many(linkTags),
user: one(users, { fields: [tags.userId], references: [users.id] }),
linkTags: many(linkTags),
}));
export const linkTagsRelations = relations(linkTags, ({ one }) => ({
link: one(links, { fields: [linkTags.linkId], references: [links.id] }),
tag: one(tags, { fields: [linkTags.tagId], references: [tags.id] }),
link: one(links, { fields: [linkTags.linkId], references: [links.id] }),
tag: one(tags, { fields: [linkTags.tagId], references: [tags.id] }),
}));
export const accountsRelations = relations(accounts, ({ one, many }) => ({
owner: one(users, { fields: [accounts.owner], references: [users.id] }),
links: many(links),
owner: one(users, { fields: [accounts.owner], references: [users.id] }),
links: many(links),
}));
export const workspacesRelations = relations(workspaces, ({ one, many }) => ({
owner: one(users, { fields: [workspaces.owner], references: [users.id] }),
links: many(links),
owner: one(users, { fields: [workspaces.owner], references: [users.id] }),
links: many(links),
}));

View file

@ -1,55 +1,44 @@
import {
pgTable,
uuid,
text,
boolean,
integer,
timestamp,
index,
} from 'drizzle-orm/pg-core';
import { pgTable, uuid, text, boolean, integer, timestamp, index } from 'drizzle-orm/pg-core';
import { users } from './users.js';
import { links } from './links.js';
export const tags = pgTable(
'tags',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
slug: text('slug').notNull(),
color: text('color'),
icon: text('icon'),
isPublic: boolean('is_public').default(false),
usageCount: integer('usage_count').default(0),
userId: uuid('user_id').references(() => users.id),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('tags_user_id_idx').on(table.userId),
index('tags_slug_idx').on(table.slug),
]
'tags',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
slug: text('slug').notNull(),
color: text('color'),
icon: text('icon'),
isPublic: boolean('is_public').default(false),
usageCount: integer('usage_count').default(0),
userId: uuid('user_id').references(() => users.id),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [index('tags_user_id_idx').on(table.userId), index('tags_slug_idx').on(table.slug)]
);
export type Tag = typeof tags.$inferSelect;
export type NewTag = typeof tags.$inferInsert;
export const linkTags = pgTable(
'link_tags',
{
id: uuid('id').primaryKey().defaultRandom(),
linkId: uuid('link_id')
.references(() => links.id, { onDelete: 'cascade' })
.notNull(),
tagId: uuid('tag_id')
.references(() => tags.id, { onDelete: 'cascade' })
.notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
},
(table) => [
index('link_tags_link_id_idx').on(table.linkId),
index('link_tags_tag_id_idx').on(table.tagId),
index('link_tags_unique_idx').on(table.linkId, table.tagId),
]
'link_tags',
{
id: uuid('id').primaryKey().defaultRandom(),
linkId: uuid('link_id')
.references(() => links.id, { onDelete: 'cascade' })
.notNull(),
tagId: uuid('tag_id')
.references(() => tags.id, { onDelete: 'cascade' })
.notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
},
(table) => [
index('link_tags_link_id_idx').on(table.linkId),
index('link_tags_tag_id_idx').on(table.tagId),
index('link_tags_unique_idx').on(table.linkId, table.tagId),
]
);
export type LinkTag = typeof linkTags.$inferSelect;

View file

@ -1,44 +1,36 @@
import {
pgTable,
uuid,
text,
boolean,
integer,
timestamp,
index,
} from 'drizzle-orm/pg-core';
import { pgTable, uuid, text, boolean, integer, timestamp, index } from 'drizzle-orm/pg-core';
import { relations } from 'drizzle-orm';
export const users = pgTable(
'users',
{
id: uuid('id').primaryKey().defaultRandom(),
externalAuthId: text('external_auth_id').unique(), // For Mana Core auth
email: text('email').unique().notNull(),
username: text('username').unique().notNull(),
name: text('name'),
avatarUrl: text('avatar_url'),
bio: text('bio'),
location: text('location'),
website: text('website'),
github: text('github'),
twitter: text('twitter'),
linkedin: text('linkedin'),
instagram: text('instagram'),
publicProfile: boolean('public_profile').default(false),
showClickStats: boolean('show_click_stats').default(true),
emailNotifications: boolean('email_notifications').default(true),
defaultExpiry: integer('default_expiry'),
profileBackground: text('profile_background'),
verified: boolean('verified').default(false),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('users_email_idx').on(table.email),
index('users_username_idx').on(table.username),
index('users_external_auth_id_idx').on(table.externalAuthId),
]
'users',
{
id: uuid('id').primaryKey().defaultRandom(),
externalAuthId: text('external_auth_id').unique(), // For Mana Core auth
email: text('email').unique().notNull(),
username: text('username').unique().notNull(),
name: text('name'),
avatarUrl: text('avatar_url'),
bio: text('bio'),
location: text('location'),
website: text('website'),
github: text('github'),
twitter: text('twitter'),
linkedin: text('linkedin'),
instagram: text('instagram'),
publicProfile: boolean('public_profile').default(false),
showClickStats: boolean('show_click_stats').default(true),
emailNotifications: boolean('email_notifications').default(true),
defaultExpiry: integer('default_expiry'),
profileBackground: text('profile_background'),
verified: boolean('verified').default(false),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('users_email_idx').on(table.email),
index('users_username_idx').on(table.username),
index('users_external_auth_id_idx').on(table.externalAuthId),
]
);
export type User = typeof users.$inferSelect;

View file

@ -2,22 +2,22 @@ import { pgTable, uuid, text, timestamp, index } from 'drizzle-orm/pg-core';
import { users } from './users.js';
export const workspaces = pgTable(
'workspaces',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
slug: text('slug').unique().notNull(),
type: text('type', { enum: ['personal', 'team'] }).notNull(),
owner: uuid('owner')
.references(() => users.id)
.notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('workspaces_slug_idx').on(table.slug),
index('workspaces_owner_idx').on(table.owner),
]
'workspaces',
{
id: uuid('id').primaryKey().defaultRandom(),
name: text('name').notNull(),
slug: text('slug').unique().notNull(),
type: text('type', { enum: ['personal', 'team'] }).notNull(),
owner: uuid('owner')
.references(() => users.id)
.notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
},
(table) => [
index('workspaces_slug_idx').on(table.slug),
index('workspaces_owner_idx').on(table.owner),
]
);
export type Workspace = typeof workspaces.$inferSelect;