Skip to content

Commit 2447591

Browse files
chore: wip
1 parent 702f63d commit 2447591

18 files changed

+65
-40
lines changed

database/migrations/1740753127344-create-personal_access_tokens-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ export async function up(db: Database<any>) {
1515
.addColumn('ip_address', 'text')
1616
.addColumn('device_name', 'text')
1717
.addColumn('is_single_use', 'integer')
18-
.addColumn('team_id', 'integer', (col) =>
19-
col.references('teams.id').onDelete('cascade')
20-
)
18+
.addColumn('team_id', 'integer', col =>
19+
col.references('teams.id').onDelete('cascade'))
2120
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
2221
.addColumn('updated_at', 'timestamp')
2322
.execute()
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import type { Database } from '@stacksjs/database'
2+
23
export async function up(db: Database<any>) {
34
await db.schema
45
.createTable('team_users')
56
.addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
67
.addColumn('team_id', 'integer')
78
.addColumn('user_id', 'integer')
89
.execute()
9-
}
10+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Database } from '@stacksjs/database'
2-
import { sql } from '@stacksjs/database'
2+
import { sql } from '@stacksjs/database'
33

44
export async function up(db: Database<any>) {
55
await db.schema
@@ -9,4 +9,4 @@ export async function up(db: Database<any>) {
99
.addColumn('activity_id', 'integer', col => col.notNull())
1010
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))
1111
.execute()
12-
}
12+
}

database/migrations/1740753127355-create-subscribers-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ export async function up(db: Database<any>) {
66
.createTable('subscribers')
77
.addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
88
.addColumn('subscribed', 'integer')
9-
.addColumn('user_id', 'integer', (col) =>
10-
col.references('users.id').onDelete('cascade')
11-
)
9+
.addColumn('user_id', 'integer', col =>
10+
col.references('users.id').onDelete('cascade'))
1211
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
1312
.addColumn('updated_at', 'timestamp')
1413
.execute()

database/migrations/1740753127357-create-deployments-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ export async function up(db: Database<any>) {
1313
.addColumn('execution_time', 'numeric')
1414
.addColumn('deploy_script', 'text')
1515
.addColumn('terminal_output', 'text')
16-
.addColumn('user_id', 'integer', (col) =>
17-
col.references('users.id').onDelete('cascade')
18-
)
16+
.addColumn('user_id', 'integer', col =>
17+
col.references('users.id').onDelete('cascade'))
1918
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
2019
.addColumn('updated_at', 'timestamp')
2120
.execute()

database/migrations/1740753127363-create-passkeys-table.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Database } from '@stacksjs/database'
2-
import { sql } from '@stacksjs/database'
2+
import { sql } from '@stacksjs/database'
33

44
export async function up(db: Database<any>) {
55
await db.schema
@@ -17,4 +17,4 @@ export async function up(db: Database<any>) {
1717
.addColumn('last_used_at', 'text')
1818
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql.raw('CURRENT_TIMESTAMP')))
1919
.execute()
20-
}
20+
}

database/migrations/1740753127365-create-posts-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ export async function up(db: Database<any>) {
77
.addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
88
.addColumn('title', 'text')
99
.addColumn('body', 'text')
10-
.addColumn('user_id', 'integer', (col) =>
11-
col.references('users.id').onDelete('cascade')
12-
)
10+
.addColumn('user_id', 'integer', col =>
11+
col.references('users.id').onDelete('cascade'))
1312
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
1413
.addColumn('updated_at', 'timestamp')
1514
.execute()

database/migrations/1740753127370-create-payment_methods-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ export async function up(db: Database<any>) {
1313
.addColumn('exp_year', 'numeric', col => col.notNull())
1414
.addColumn('is_default', 'integer')
1515
.addColumn('provider_id', 'text')
16-
.addColumn('user_id', 'integer', (col) =>
17-
col.references('users.id').onDelete('cascade')
18-
)
16+
.addColumn('user_id', 'integer', col =>
17+
col.references('users.id').onDelete('cascade'))
1918
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
2019
.addColumn('updated_at', 'timestamp')
2120
.execute()

database/migrations/1740753127374-create-payment_transactions-table.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ export async function up(db: Database<any>) {
1111
.addColumn('amount', 'numeric', col => col.notNull())
1212
.addColumn('type', 'text', col => col.notNull())
1313
.addColumn('provider_id', 'text')
14-
.addColumn('user_id', 'integer', (col) =>
15-
col.references('users.id').onDelete('cascade')
16-
)
17-
.addColumn('payment_method_id', 'integer', (col) =>
18-
col.references('payment_methods.id').onDelete('cascade')
19-
)
14+
.addColumn('user_id', 'integer', col =>
15+
col.references('users.id').onDelete('cascade'))
16+
.addColumn('payment_method_id', 'integer', col =>
17+
col.references('payment_methods.id').onDelete('cascade'))
2018
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
2119
.addColumn('updated_at', 'timestamp')
2220
.execute()

database/migrations/1740753127379-create-subscriptions-table.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ export async function up(db: Database<any>) {
1616
.addColumn('trial_ends_at', 'text')
1717
.addColumn('ends_at', 'text')
1818
.addColumn('last_used_at', 'text')
19-
.addColumn('user_id', 'integer', (col) =>
20-
col.references('users.id').onDelete('cascade')
21-
)
19+
.addColumn('user_id', 'integer', col =>
20+
col.references('users.id').onDelete('cascade'))
2221
.addColumn('created_at', 'timestamp', col => col.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
2322
.addColumn('updated_at', 'timestamp')
2423
.execute()

resources/emails/WelcomeTest.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<template>
2+
<div>
3+
Hello World
4+
</div>
5+
</template>

storage/framework/core/email/src/drivers/base.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export abstract class BaseEmailDriver implements EmailDriver {
6161
*/
6262
protected async handleError(error: unknown, message: EmailMessage): Promise<EmailResult> {
6363
const err = error instanceof Error ? error : new Error(String(error))
64+
6465
log.error(`[${this.name}] Email sending failed`, {
6566
error: err.message,
6667
stack: err.stack,

storage/framework/core/email/src/drivers/mailtrap.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import { BaseEmailDriver } from './base'
77

88
export class MailtrapDriver extends BaseEmailDriver {
99
public name = 'mailtrap'
10+
private host: string
1011
private token: string
1112
private inboxId?: number
1213

1314
constructor() {
1415
super()
15-
this.token = config.services.mailtrap?.token ?? ''
16-
this.inboxId = config.services.mailtrap?.inboxId ? Number(config.services.mailtrap.inboxId) : undefined
16+
this.host = config.services.mailtrap?.host ?? 'https://sandbox.api.mailtrap.io/api/send'
17+
this.token = 'c36253a573dea8edac2c549f349a3cb9'
18+
// this.token = config.services.mailtrap?.token ?? ''
19+
this.inboxId = 403353
20+
// this.inboxId = config.services.mailtrap?.inboxId ? Number(config.services.mailtrap.inboxId) : undefined
1721
}
1822

1923
public async send(message: EmailMessage, options?: RenderOptions): Promise<EmailResult> {
@@ -96,7 +100,7 @@ export class MailtrapDriver extends BaseEmailDriver {
96100
throw new Error('Mailtrap inbox ID is required but not provided. Please set MAILTRAP_INBOX_ID in your environment variables.')
97101
}
98102

99-
const endpoint = `https://sandbox.api.mailtrap.io/api/send/${this.inboxId}`
103+
const endpoint = `${this.host}/${this.inboxId}`
100104

101105
try {
102106
const response = await fetch(endpoint, {

storage/framework/core/email/src/email.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ class Mail {
4141
}
4242

4343
// Export a singleton instance
44-
export const mail: Mail = new Mail()
44+
export const mail: Mail = new Mail({ defaultDriver: 'mailtrap' })

storage/framework/core/email/src/template.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ interface HtmlResult {
99
}
1010

1111
export async function template(path: string, options?: RenderOptions): Promise<HtmlResult> {
12+
const templatePath = path.endsWith('.vue') ? path : `${path}.vue`
13+
1214
const email = config(resourcesPath('emails'), {
1315
verbose: !!process.env.DEBUG,
1416
// options: {
1517
// baseUrl: 'https://APP_URL/',
1618
// },
1719
})
1820

19-
return await email.render(path, options)
21+
return await email.render(templatePath, options)
2022
}

storage/framework/core/error-handling/src/handler.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,24 @@ export async function writeToLogFile(message: string, options?: WriteOptions): P
116116
await appendFile(logFile, formattedMessage)
117117
}
118118

119-
export function handleError(err: string | Error | object | unknown, options?: ErrorOptions): Error {
119+
export function handleError(
120+
err: string | Error | object | unknown,
121+
options?: ErrorOptions | Record<string, any>,
122+
): Error {
120123
let errorMessage: string
124+
let contextData: Record<string, any> | undefined
125+
126+
// Check if options is a context object (not an ErrorOptions)
127+
if (options
128+
&& typeof options === 'object'
129+
&& !('shouldExit' in options)
130+
&& !('silent' in options)
131+
&& !('message' in options)) {
132+
contextData = options as Record<string, any>
133+
options = undefined
134+
}
121135

122-
if (options && options.message) {
136+
if (options && 'message' in options) {
123137
// If options is provided with a message, use options.message as error message
124138
errorMessage = options.message
125139
}
@@ -138,7 +152,13 @@ export function handleError(err: string | Error | object | unknown, options?: Er
138152
}
139153
}
140154

141-
writeToLogFile(`ERROR: ${stripAnsi(errorMessage)}`)
155+
// Build log message with context if available
156+
let logMessage = `ERROR: ${stripAnsi(errorMessage)}`
157+
if (contextData) {
158+
logMessage += `\nContext: ${JSON.stringify(contextData, null, 2)}`
159+
}
160+
161+
writeToLogFile(logMessage)
142162

143-
return ErrorHandler.handle(err, options)
163+
return ErrorHandler.handle(err, options as ErrorOptions)
144164
}

storage/framework/core/types/src/services.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ export interface ServicesOptions {
4040
}
4141

4242
mailtrap?: {
43-
token?: string
43+
token: string
44+
host: string
4445
inboxId?: string | number
4546
maxRetries?: number
4647
retryTimeout?: number

storage/framework/types/server-auto-imports.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ declare global {
147147
const UsersTable: typeof import('./../orm/src/models')['UsersTable']
148148
const accesstokenRequest: typeof import('./../requests')['accesstokenRequest']
149149
const activityRequest: typeof import('./../requests')['activityRequest']
150-
const default: typeof import('./../orm/src/models')['default']
151150
const deploymentRequest: typeof import('./../requests')['deploymentRequest']
152151
const errorRequest: typeof import('./../requests')['errorRequest']
153152
const failedjobRequest: typeof import('./../requests')['failedjobRequest']

0 commit comments

Comments
 (0)