- New nullable purchase_url column on components - Store/update validators accept an optional purchaseUrl (must be a valid absolute URL with a protocol when provided) - components/create.vue: NewPartSearch import now also fills purchaseUrl from the scraped part's source URL (pc-builder.io product page); the field remains manually editable for second-hand parts entered by hand - components/edit.vue: purchaseUrl is editable after creation - components/show.vue: displays the purchase site as a clickable link when present - 4 new functional tests: create with/without a purchase URL, invalid URL rejected (asserts the Inertia inputErrorsBag flash, not a raw 422 - content negotiation only returns JSON for XHR/API-style requests), and updating an existing component's purchase URL
18 lines
387 B
TypeScript
18 lines
387 B
TypeScript
import { BaseSchema } from '@adonisjs/lucid/schema'
|
|
|
|
export default class extends BaseSchema {
|
|
protected tableName = 'components'
|
|
|
|
async up() {
|
|
this.schema.alterTable(this.tableName, (table) => {
|
|
table.string('purchase_url').nullable()
|
|
})
|
|
}
|
|
|
|
async down() {
|
|
this.schema.alterTable(this.tableName, (table) => {
|
|
table.dropColumn('purchase_url')
|
|
})
|
|
}
|
|
}
|