diff --git a/lib/db/derivedtables/accelerometer.ts b/lib/db/derivedtables/accelerometer.ts index bd67aeb..0ee76e2 100644 --- a/lib/db/derivedtables/accelerometer.ts +++ b/lib/db/derivedtables/accelerometer.ts @@ -28,6 +28,7 @@ export const accelerometerTableSpec: DerivedTableSpec = { { name: "has_uart", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -102,6 +103,7 @@ export const accelerometerTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", supply_voltage_min: voltageMin, supply_voltage_max: voltageMax, diff --git a/lib/db/derivedtables/adc.ts b/lib/db/derivedtables/adc.ts index 008b533..3c3c6c0 100644 --- a/lib/db/derivedtables/adc.ts +++ b/lib/db/derivedtables/adc.ts @@ -40,6 +40,7 @@ export const adcTableSpec: DerivedTableSpec = { { name: "operating_temp_max", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -115,6 +116,7 @@ export const adcTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", resolution_bits: resolution, sampling_rate_hz: samplingRate, diff --git a/lib/db/derivedtables/analog_multiplexer.ts b/lib/db/derivedtables/analog_multiplexer.ts index 1e4bb7d..bc9c695 100644 --- a/lib/db/derivedtables/analog_multiplexer.ts +++ b/lib/db/derivedtables/analog_multiplexer.ts @@ -40,6 +40,7 @@ export const analogMultiplexerTableSpec: DerivedTableSpec = { { name: "channel_type", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -144,6 +145,7 @@ export const analogMultiplexerTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", num_channels: numChannels, num_bits: numBits, diff --git a/lib/db/derivedtables/battery_holder.ts b/lib/db/derivedtables/battery_holder.ts index c970eee..9b95cc4 100644 --- a/lib/db/derivedtables/battery_holder.ts +++ b/lib/db/derivedtables/battery_holder.ts @@ -32,6 +32,7 @@ export const batteryHolderTableSpec: DerivedTableSpec = { { name: "operating_temp_max", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -74,6 +75,7 @@ export const batteryHolderTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), connector_type: attrs["Connector Type"] || null, battery_type: attrs["Battery Type"] || null, diff --git a/lib/db/derivedtables/bjt_transistor.ts b/lib/db/derivedtables/bjt_transistor.ts index ae3a255..4c70d44 100644 --- a/lib/db/derivedtables/bjt_transistor.ts +++ b/lib/db/derivedtables/bjt_transistor.ts @@ -26,6 +26,7 @@ export const bjtTransistorTableSpec: DerivedTableSpec = { { name: "temperature_range", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -74,6 +75,7 @@ export const bjtTransistorTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", current_gain: current_gain, collector_current: collector_current, diff --git a/lib/db/derivedtables/boost_converter.ts b/lib/db/derivedtables/boost_converter.ts index da3fad8..638136f 100644 --- a/lib/db/derivedtables/boost_converter.ts +++ b/lib/db/derivedtables/boost_converter.ts @@ -31,6 +31,7 @@ export const boostConverterTableSpec: DerivedTableSpec = { { name: "number_of_outputs", type: "integer" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -117,6 +118,7 @@ export const boostConverterTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", input_voltage_min: inputMin, input_voltage_max: inputMax, diff --git a/lib/db/derivedtables/buck_boost_converter.ts b/lib/db/derivedtables/buck_boost_converter.ts index 784ec02..22001f2 100644 --- a/lib/db/derivedtables/buck_boost_converter.ts +++ b/lib/db/derivedtables/buck_boost_converter.ts @@ -32,6 +32,7 @@ export const buckBoostConverterTableSpec: DerivedTableSpec = { name: "number_of_outputs", type: "integer" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -121,6 +122,7 @@ export const buckBoostConverterTableSpec: DerivedTableSpec = in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", input_voltage_min: inputMin, input_voltage_max: inputMax, diff --git a/lib/db/derivedtables/capacitor.ts b/lib/db/derivedtables/capacitor.ts index 971f055..38d9af4 100644 --- a/lib/db/derivedtables/capacitor.ts +++ b/lib/db/derivedtables/capacitor.ts @@ -34,6 +34,7 @@ export const capacitorTableSpec: DerivedTableSpec = { { name: "capacitor_type", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -115,6 +116,7 @@ export const capacitorTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, capacitance_farads: capacitance, tolerance_fraction: tolerance, voltage_rating: voltage, diff --git a/lib/db/derivedtables/component-base.ts b/lib/db/derivedtables/component-base.ts index c028aec..35f2fe6 100644 --- a/lib/db/derivedtables/component-base.ts +++ b/lib/db/derivedtables/component-base.ts @@ -7,5 +7,6 @@ export interface BaseComponent { in_stock: boolean is_basic: boolean is_preferred: boolean + is_extended_promotional: boolean attributes: Record } diff --git a/lib/db/derivedtables/dac.ts b/lib/db/derivedtables/dac.ts index a0388ad..3ca69f0 100644 --- a/lib/db/derivedtables/dac.ts +++ b/lib/db/derivedtables/dac.ts @@ -38,6 +38,7 @@ export const dacTableSpec: DerivedTableSpec = { { name: "nonlinearity_lsb", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -129,6 +130,7 @@ export const dacTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", resolution_bits: resolution, num_channels: numChannels, diff --git a/lib/db/derivedtables/diode.ts b/lib/db/derivedtables/diode.ts index dad2916..9a97afc 100644 --- a/lib/db/derivedtables/diode.ts +++ b/lib/db/derivedtables/diode.ts @@ -40,6 +40,7 @@ export const diodeTableSpec: DerivedTableSpec = { { name: "configuration", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -159,6 +160,7 @@ export const diodeTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", forward_voltage: forwardVoltage, reverse_voltage: reverseVoltage, diff --git a/lib/db/derivedtables/fpc_connector.ts b/lib/db/derivedtables/fpc_connector.ts index ced77e9..0ba760b 100644 --- a/lib/db/derivedtables/fpc_connector.ts +++ b/lib/db/derivedtables/fpc_connector.ts @@ -20,6 +20,7 @@ export const fpcConnectorTableSpec: DerivedTableSpec = { { name: "locking_feature", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -55,6 +56,7 @@ export const fpcConnectorTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, pitch_mm: parseNum(attrs["Pitch"]), number_of_contacts: isNaN(contacts) ? null : contacts, contact_type: attrs["Contact Type"] || null, diff --git a/lib/db/derivedtables/fpga.ts b/lib/db/derivedtables/fpga.ts index e7d0402..2b532e4 100644 --- a/lib/db/derivedtables/fpga.ts +++ b/lib/db/derivedtables/fpga.ts @@ -68,6 +68,7 @@ export const fpgaTableSpec: DerivedTableSpec = { { name: "logic_gates", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -99,6 +100,7 @@ export const fpgaTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock ?? 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: extra?.package ?? c.package ?? "", type: attrs["Type"] ?? null, logic_array_blocks: parseNumericValue(attrs["Logic Array Blocks"]), diff --git a/lib/db/derivedtables/fuse.ts b/lib/db/derivedtables/fuse.ts index 0b56ac1..b8b8eeb 100644 --- a/lib/db/derivedtables/fuse.ts +++ b/lib/db/derivedtables/fuse.ts @@ -25,6 +25,7 @@ export const fuseTableSpec: DerivedTableSpec = { { name: "is_resettable", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -90,6 +91,7 @@ export const fuseTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, current_rating: current_rating as number, voltage_rating: voltage_rating as number, response_time, diff --git a/lib/db/derivedtables/gas_sensor.ts b/lib/db/derivedtables/gas_sensor.ts index a44050b..41586e8 100644 --- a/lib/db/derivedtables/gas_sensor.ts +++ b/lib/db/derivedtables/gas_sensor.ts @@ -36,6 +36,7 @@ export const gasSensorTableSpec: DerivedTableSpec = { { name: "measures_explosive_gases", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db) { return db @@ -82,6 +83,7 @@ export const gasSensorTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", sensor_type: sensorType, measures_air_quality: measuresAirQuality, diff --git a/lib/db/derivedtables/gyroscope.ts b/lib/db/derivedtables/gyroscope.ts index 9671b5d..21fafc1 100644 --- a/lib/db/derivedtables/gyroscope.ts +++ b/lib/db/derivedtables/gyroscope.ts @@ -28,6 +28,7 @@ export const gyroscopeTableSpec: DerivedTableSpec = { { name: "has_uart", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -106,6 +107,7 @@ export const gyroscopeTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", supply_voltage_min: voltageMin, supply_voltage_max: voltageMax, diff --git a/lib/db/derivedtables/header.ts b/lib/db/derivedtables/header.ts index 04bc7bb..d0fbe40 100644 --- a/lib/db/derivedtables/header.ts +++ b/lib/db/derivedtables/header.ts @@ -48,6 +48,7 @@ export const headerTableSpec: DerivedTableSpec
= { { name: "is_right_angle", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -197,6 +198,7 @@ export const headerTableSpec: DerivedTableSpec
= { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, price1: extractMinQPrice(c.price)!, package: c.package || "", pitch_mm: pitch, diff --git a/lib/db/derivedtables/io_expander.ts b/lib/db/derivedtables/io_expander.ts index e9bf2da..f384f12 100644 --- a/lib/db/derivedtables/io_expander.ts +++ b/lib/db/derivedtables/io_expander.ts @@ -40,6 +40,7 @@ export const ioExpanderTableSpec: DerivedTableSpec = { { name: "source_current_ma", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -139,6 +140,7 @@ export const ioExpanderTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", num_gpios: numGpios, supply_voltage_min: voltageMin, diff --git a/lib/db/derivedtables/jst_connector.ts b/lib/db/derivedtables/jst_connector.ts index 0afd2aa..6bcb6d4 100644 --- a/lib/db/derivedtables/jst_connector.ts +++ b/lib/db/derivedtables/jst_connector.ts @@ -22,6 +22,7 @@ export const jstConnectorTableSpec: DerivedTableSpec = { { name: "reference_series", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -69,6 +70,7 @@ export const jstConnectorTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), pitch_mm: parseNum(attrs["Pitch"]), num_rows: isNaN(numRows) ? null : numRows, diff --git a/lib/db/derivedtables/lcd_display.ts b/lib/db/derivedtables/lcd_display.ts index 15a34c5..2457aa4 100644 --- a/lib/db/derivedtables/lcd_display.ts +++ b/lib/db/derivedtables/lcd_display.ts @@ -19,6 +19,7 @@ export const lcdDisplayTableSpec: DerivedTableSpec = { { name: "display_type", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -64,6 +65,7 @@ export const lcdDisplayTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), display_size, resolution, diff --git a/lib/db/derivedtables/led.ts b/lib/db/derivedtables/led.ts index f12a12e..2095a55 100644 --- a/lib/db/derivedtables/led.ts +++ b/lib/db/derivedtables/led.ts @@ -37,6 +37,7 @@ export const ledTableSpec: DerivedTableSpec = { { name: "is_rgb", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -165,6 +166,7 @@ export const ledTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", forward_voltage: forwardVoltage, forward_current: forwardCurrent, diff --git a/lib/db/derivedtables/led_dot_matrix_display.ts b/lib/db/derivedtables/led_dot_matrix_display.ts index 2d32eda..18f161e 100644 --- a/lib/db/derivedtables/led_dot_matrix_display.ts +++ b/lib/db/derivedtables/led_dot_matrix_display.ts @@ -18,6 +18,7 @@ export const ledDotMatrixDisplayTableSpec: DerivedTableSpec { name: "color", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -57,6 +58,7 @@ export const ledDotMatrixDisplayTableSpec: DerivedTableSpec in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), matrix_size, color, diff --git a/lib/db/derivedtables/led_driver.ts b/lib/db/derivedtables/led_driver.ts index 55f0e8c..1ea2469 100644 --- a/lib/db/derivedtables/led_driver.ts +++ b/lib/db/derivedtables/led_driver.ts @@ -42,6 +42,7 @@ export const ledDriverTableSpec: DerivedTableSpec = { { name: "mounting_style", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -77,6 +78,7 @@ export const ledDriverTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), supply_voltage_min: parseValue(attrs["Input Voltage"]?.split("~")[0]), supply_voltage_max: parseValue(attrs["Input Voltage"]?.split("~")[1]), diff --git a/lib/db/derivedtables/led_segment_display.ts b/lib/db/derivedtables/led_segment_display.ts index bf5f50e..87c87cc 100644 --- a/lib/db/derivedtables/led_segment_display.ts +++ b/lib/db/derivedtables/led_segment_display.ts @@ -21,6 +21,7 @@ export const ledSegmentDisplayTableSpec: DerivedTableSpec = { { name: "color", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { @@ -70,6 +71,7 @@ export const ledSegmentDisplayTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), positions, type, diff --git a/lib/db/derivedtables/led_with_ic.ts b/lib/db/derivedtables/led_with_ic.ts index bba0faa..17542ae 100644 --- a/lib/db/derivedtables/led_with_ic.ts +++ b/lib/db/derivedtables/led_with_ic.ts @@ -27,6 +27,7 @@ export const ledWithICTableSpec: DerivedTableSpec = { { name: "protocol", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -99,6 +100,7 @@ export const ledWithICTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), forward_voltage: forwardVoltage, forward_current: forwardCurrent, diff --git a/lib/db/derivedtables/microcontroller.ts b/lib/db/derivedtables/microcontroller.ts index 6b7b083..a3d919e 100644 --- a/lib/db/derivedtables/microcontroller.ts +++ b/lib/db/derivedtables/microcontroller.ts @@ -62,6 +62,7 @@ export const microcontrollerTableSpec: DerivedTableSpec = { { name: "dac_resolution_bits", type: "integer" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -228,6 +229,7 @@ export const microcontrollerTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", cpu_core: cpuCore, cpu_speed_hz: cpuSpeed, diff --git a/lib/db/derivedtables/mosfet.ts b/lib/db/derivedtables/mosfet.ts index 31f5412..f16c73d 100644 --- a/lib/db/derivedtables/mosfet.ts +++ b/lib/db/derivedtables/mosfet.ts @@ -35,6 +35,7 @@ export const mosfetTableSpec: DerivedTableSpec = { { name: "mounting_style", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -68,6 +69,7 @@ export const mosfetTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), drain_source_voltage: parseValue( attrs["Drain Source Voltage (Vdss)"], diff --git a/lib/db/derivedtables/oled_display.ts b/lib/db/derivedtables/oled_display.ts index dbabb65..99e9c17 100644 --- a/lib/db/derivedtables/oled_display.ts +++ b/lib/db/derivedtables/oled_display.ts @@ -19,6 +19,7 @@ export const oledDisplayTableSpec: DerivedTableSpec = { { name: "pixel_resolution", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { @@ -65,6 +66,7 @@ export const oledDisplayTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), protocol: protocol || undefined, display_width, diff --git a/lib/db/derivedtables/pcie_m2_connector.ts b/lib/db/derivedtables/pcie_m2_connector.ts index 0e9bcc1..786291a 100644 --- a/lib/db/derivedtables/pcie_m2_connector.ts +++ b/lib/db/derivedtables/pcie_m2_connector.ts @@ -14,6 +14,7 @@ export const pcieM2ConnectorTableSpec: DerivedTableSpec = { { name: "is_right_angle", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -49,6 +50,7 @@ export const pcieM2ConnectorTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, key, is_right_angle: isRightAngle, attributes: attrs, diff --git a/lib/db/derivedtables/potentiometer.ts b/lib/db/derivedtables/potentiometer.ts index b7c0080..6d93cc2 100644 --- a/lib/db/derivedtables/potentiometer.ts +++ b/lib/db/derivedtables/potentiometer.ts @@ -19,6 +19,7 @@ export const potentiometerTableSpec: DerivedTableSpec = { { name: "is_surface_mount", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -67,6 +68,7 @@ export const potentiometerTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, max_resistance: maxResistance, pin_variant: pinVariant, package: c.package || "", diff --git a/lib/db/derivedtables/relay.ts b/lib/db/derivedtables/relay.ts index 944a5fe..d0d5254 100644 --- a/lib/db/derivedtables/relay.ts +++ b/lib/db/derivedtables/relay.ts @@ -29,6 +29,7 @@ export const relayTableSpec: DerivedTableSpec = { { name: "pin_number", type: "integer" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -62,6 +63,7 @@ export const relayTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), relay_type: (c as any).subcategory || "", contact_form: attrs["Contact Form"] || null, diff --git a/lib/db/derivedtables/resistor.ts b/lib/db/derivedtables/resistor.ts index b6b437d..7567644 100644 --- a/lib/db/derivedtables/resistor.ts +++ b/lib/db/derivedtables/resistor.ts @@ -31,6 +31,7 @@ export const resistorTableSpec: DerivedTableSpec = { { name: "is_multi_resistor_chip", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -82,6 +83,7 @@ export const resistorTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, resistance: resistance, tolerance_fraction: tolerance, power_watts, diff --git a/lib/db/derivedtables/resistor_array.ts b/lib/db/derivedtables/resistor_array.ts index 5521d4d..be85970 100644 --- a/lib/db/derivedtables/resistor_array.ts +++ b/lib/db/derivedtables/resistor_array.ts @@ -69,6 +69,7 @@ export const resistorArrayTableSpec: DerivedTableSpec = { { name: "is_surface_mount", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -124,6 +125,7 @@ export const resistorArrayTableSpec: DerivedTableSpec = { in_stock: component.stock > 0, is_basic: Boolean(component.basic), is_preferred: Boolean(component.preferred), + is_extended_promotional: false, package: component.package ?? "", resistance, tolerance_fraction: tolerance, diff --git a/lib/db/derivedtables/switch.ts b/lib/db/derivedtables/switch.ts index 5730306..89b1d97 100644 --- a/lib/db/derivedtables/switch.ts +++ b/lib/db/derivedtables/switch.ts @@ -37,6 +37,7 @@ export const switchTableSpec: DerivedTableSpec = { { name: "switch_height_mm", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db) { return db @@ -91,6 +92,7 @@ export const switchTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", switch_type: (c as any).subcategory || "", circuit: attrs["Circuit"] || null, diff --git a/lib/db/derivedtables/types.ts b/lib/db/derivedtables/types.ts index 1410aec..6c5f2f4 100644 --- a/lib/db/derivedtables/types.ts +++ b/lib/db/derivedtables/types.ts @@ -15,6 +15,7 @@ export interface DerivedTableSpec< price1: number | null in_stock: boolean is_basic: boolean + is_extended_promotional: boolean }, > { tableName: string diff --git a/lib/db/derivedtables/usb_c_connector.ts b/lib/db/derivedtables/usb_c_connector.ts index 6d7b317..343b09f 100644 --- a/lib/db/derivedtables/usb_c_connector.ts +++ b/lib/db/derivedtables/usb_c_connector.ts @@ -28,6 +28,7 @@ export const usbCConnectorTableSpec: DerivedTableSpec = { { name: "operating_temp_max", type: "real" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents(db: KyselyDatabaseInstance) { return db @@ -69,6 +70,7 @@ export const usbCConnectorTableSpec: DerivedTableSpec = { in_stock: Boolean((c.stock || 0) > 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), mounting_style: attrs["Mounting Style"] || null, current_rating_a: parseNum(attrs["Current Rating - Power (Max)"]), diff --git a/lib/db/derivedtables/voltage_regulator.ts b/lib/db/derivedtables/voltage_regulator.ts index 86b0f14..a524122 100644 --- a/lib/db/derivedtables/voltage_regulator.ts +++ b/lib/db/derivedtables/voltage_regulator.ts @@ -43,6 +43,7 @@ export const voltageRegulatorTableSpec: DerivedTableSpec = { { name: "topology", type: "text" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -184,6 +185,7 @@ export const voltageRegulatorTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", output_type: outputType, output_voltage_min: voltageMin, diff --git a/lib/db/derivedtables/wifi_module.ts b/lib/db/derivedtables/wifi_module.ts index f56be11..bd8bca0 100644 --- a/lib/db/derivedtables/wifi_module.ts +++ b/lib/db/derivedtables/wifi_module.ts @@ -45,6 +45,7 @@ export const wifiModuleTableSpec: DerivedTableSpec = { { name: "has_pwm", type: "boolean" }, { name: "is_basic", type: "boolean" }, { name: "is_preferred", type: "boolean" }, + { name: "is_extended_promotional", type: "boolean" }, ], listCandidateComponents: (db) => db @@ -140,6 +141,7 @@ export const wifiModuleTableSpec: DerivedTableSpec = { in_stock: c.stock > 0, is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: c.package || "", core_processor: attrs["Core Processor"] || null, antenna_type: attrs["Antenna Type"] || null, diff --git a/lib/db/derivedtables/wire_to_board_connector.ts b/lib/db/derivedtables/wire_to_board_connector.ts index 48a30a6..fe5c0a3 100644 --- a/lib/db/derivedtables/wire_to_board_connector.ts +++ b/lib/db/derivedtables/wire_to_board_connector.ts @@ -61,6 +61,7 @@ export const wireToBoardConnectorTableSpec: DerivedTableSpec 0), is_basic: Boolean(c.basic), is_preferred: Boolean(c.preferred), + is_extended_promotional: false, package: String(c.package || ""), pitch_mm: pitchMm, num_rows: numRows, diff --git a/lib/db/generated/kysely.ts b/lib/db/generated/kysely.ts index 6f300df..68fbb14 100644 --- a/lib/db/generated/kysely.ts +++ b/lib/db/generated/kysely.ts @@ -18,6 +18,7 @@ export interface Accelerometer { has_uart: number | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; mfr: string | null; @@ -39,7 +40,10 @@ export interface Adc { has_spi: number | null; has_uart: number | null; in_stock: number | null; + is_basic: number | null; is_differential: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; num_channels: number | null; @@ -63,6 +67,9 @@ export interface AnalogMultiplexer { has_parallel_interface: number | null; has_spi: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; leakage_current_na: number | null; mfr: string | null; @@ -85,6 +92,7 @@ export interface BatteryHolder { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; mfr: string | null; @@ -102,6 +110,9 @@ export interface BjtTransistor { current_gain: number | null; description: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; package: string | null; @@ -119,6 +130,7 @@ export interface BoostConverter { input_voltage_max: number | null; input_voltage_min: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; is_synchronous: number | null; lcsc: Generated; @@ -141,6 +153,7 @@ export interface BuckBoostConverter { input_voltage_max: number | null; input_voltage_min: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; is_synchronous: number | null; lcsc: Generated; @@ -164,6 +177,7 @@ export interface Capacitor { esr_ohms: number | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_polarized: number | null; is_preferred: number | null; is_surface_mount: number | null; @@ -247,6 +261,9 @@ export interface Dac { has_parallel_interface: number | null; has_spi: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; nonlinearity_lsb: number | null; @@ -271,6 +288,9 @@ export interface Diode { forward_current: number | null; forward_voltage: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; is_schottky: number | null; is_tvs: number | null; is_zener: number | null; @@ -293,6 +313,7 @@ export interface FpcConnector { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; locking_feature: string | null; @@ -309,6 +330,7 @@ export interface Fpga { embedded_ram_bits: number | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; logic_array_blocks: number | null; @@ -331,7 +353,10 @@ export interface Fuse { current_rating: number | null; description: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; is_glass_encased: number | null; + is_preferred: number | null; is_resettable: number | null; is_surface_mount: number | null; lcsc: Generated; @@ -348,6 +373,7 @@ export interface GasSensor { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; measures_air_quality: number | null; @@ -377,6 +403,7 @@ export interface Gyroscope { has_uart: number | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; mfr: string | null; @@ -398,6 +425,9 @@ export interface Header { gender: string | null; in_stock: number | null; insulation_height_mm: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; is_right_angle: number | null; is_shrouded: number | null; lcsc: Generated; @@ -426,6 +456,9 @@ export interface IoExpander { has_smbus: number | null; has_spi: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; num_gpios: number | null; @@ -446,6 +479,7 @@ export interface JstConnector { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; mfr: string | null; @@ -464,6 +498,9 @@ export interface LcdDisplay { display_size: string | null; display_type: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; package: string | null; @@ -480,6 +517,7 @@ export interface Ldo { input_voltage_max: number | null; input_voltage_min: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_positive: number | null; is_preferred: number | null; lcsc: Generated; @@ -506,6 +544,9 @@ export interface Led { forward_current: number | null; forward_voltage: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; is_rgb: number | null; lcsc: Generated; lens_color: string | null; @@ -527,6 +568,9 @@ export interface LedDotMatrixDisplay { color: string | null; description: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; matrix_size: string | null; mfr: string | null; @@ -542,6 +586,9 @@ export interface LedDriver { dimming_method: string | null; efficiency_percent: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; mounting_style: string | null; @@ -561,6 +608,9 @@ export interface LedSegmentDisplay { color: string | null; description: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; package: string | null; @@ -578,6 +628,9 @@ export interface LedWithIc { forward_current: number | null; forward_voltage: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; mounting_style: string | null; @@ -615,6 +668,9 @@ export interface Microcontroller { has_usb: number | null; has_watchdog: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; operating_temp_max: number | null; @@ -634,6 +690,9 @@ export interface Mosfet { drain_source_voltage: number | null; gate_threshold_voltage: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; mounting_style: string | null; @@ -650,6 +709,9 @@ export interface OledDisplay { description: string | null; display_width: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; package: string | null; @@ -664,6 +726,7 @@ export interface PcieM2Connector { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; is_right_angle: number | null; key: string | null; @@ -677,6 +740,9 @@ export interface Potentiometer { attributes: string | null; description: string | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; is_surface_mount: number | null; lcsc: Generated; max_resistance: number | null; @@ -695,6 +761,7 @@ export interface Relay { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; max_switching_current: number | null; @@ -712,6 +779,7 @@ export interface Resistor { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_multi_resistor_chip: number | null; is_potentiometer: number | null; is_preferred: number | null; @@ -734,6 +802,7 @@ export interface ResistorArray { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; is_surface_mount: number | null; lcsc: Generated; @@ -757,6 +826,7 @@ export interface Switch { description: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_latching: number | null; is_preferred: number | null; lcsc: Generated; @@ -782,6 +852,7 @@ export interface UsbCConnector { gender: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; lcsc: Generated; mfr: string | null; @@ -821,8 +892,11 @@ export interface VoltageRegulator { in_stock: number | null; input_voltage_max: number | null; input_voltage_min: number | null; + is_basic: number | null; + is_extended_promotional: number | null; is_low_dropout: number | null; is_positive: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; operating_temp_max: number | null; @@ -853,6 +927,9 @@ export interface WifiModule { has_spi: number | null; has_uart: number | null; in_stock: number | null; + is_basic: number | null; + is_extended_promotional: number | null; + is_preferred: number | null; lcsc: Generated; mfr: string | null; operating_temp_max: number | null; @@ -873,6 +950,7 @@ export interface WireToBoardConnector { gender: string | null; in_stock: number | null; is_basic: number | null; + is_extended_promotional: number | null; is_preferred: number | null; is_smd: number | null; lcsc: Generated; diff --git a/routes/capacitors/list.tsx b/routes/capacitors/list.tsx index 7486876..e30a2f7 100644 --- a/routes/capacitors/list.tsx +++ b/routes/capacitors/list.tsx @@ -13,6 +13,7 @@ export default withWinterSpec({ package: z.string().optional(), is_basic: z.boolean().optional(), is_preferred: z.boolean().optional(), + is_extended_promotional: z.boolean().optional(), capacitance: z .string() .optional() @@ -32,6 +33,7 @@ export default withWinterSpec({ package: z.string(), is_basic: z.boolean(), is_preferred: z.boolean(), + is_extended_promotional: z.boolean(), capacitance: z.number(), voltage: z.number().optional(), type: z.string().optional(), @@ -62,6 +64,9 @@ export default withWinterSpec({ if (params.is_preferred) { query = query.where("is_preferred", "=", 1) } + if (params.is_extended_promotional) { + query = query.where("is_extended_promotional", "=", 1) + } // Apply capacitance filter with a small tolerance for rounding errors if (params.capacitance != null) { @@ -89,6 +94,7 @@ export default withWinterSpec({ package: c.package ?? "", is_basic: Boolean(c.is_basic), is_preferred: Boolean(c.is_preferred), + is_extended_promotional: Boolean(c.is_extended_promotional), capacitance: c.capacitance_farads ?? 0, voltage: c.voltage_rating ?? undefined, type: c.capacitor_type ?? undefined, @@ -144,6 +150,18 @@ export default withWinterSpec({ +
+ +
+
{formatSiUnit(c.capacitance_farads)}F diff --git a/routes/resistor_arrays/list.tsx b/routes/resistor_arrays/list.tsx index 77d1e77..b53f75c 100644 --- a/routes/resistor_arrays/list.tsx +++ b/routes/resistor_arrays/list.tsx @@ -46,6 +46,7 @@ export default withWinterSpec({ .transform((val) => normalizeTopologyParam(val)), is_basic: z.boolean().optional(), is_preferred: z.boolean().optional(), + is_extended_promotional: z.boolean().optional(), resistance: z .string() .optional() @@ -65,6 +66,7 @@ export default withWinterSpec({ package: z.string(), is_basic: z.boolean(), is_preferred: z.boolean(), + is_extended_promotional: z.boolean(), number_of_resistors: z.number().nullable(), number_of_pins: z.number().nullable(), topology: z.string().nullable(), @@ -97,6 +99,9 @@ export default withWinterSpec({ if (params.is_preferred) { query = query.where("is_preferred", "=", 1) } + if (params.is_extended_promotional) { + query = query.where("is_extended_promotional", "=", 1) + } if (params.number_of_resistors != null) { query = query.where("number_of_resistors", "=", params.number_of_resistors) @@ -146,6 +151,7 @@ export default withWinterSpec({ package: array.package ?? "", is_basic: Boolean(array.is_basic), is_preferred: Boolean(array.is_preferred), + is_extended_promotional: Boolean(array.is_extended_promotional), number_of_resistors: array.number_of_resistors ?? null, number_of_pins: array.number_of_pins ?? null, topology: array.topology ?? null, @@ -238,6 +244,18 @@ export default withWinterSpec({
+
+ +
+
+
+ +
+
{formatSiUnit(r.resistance)}Ω ), diff --git a/tests/routes/capacitors/extended-promotional.test.ts b/tests/routes/capacitors/extended-promotional.test.ts new file mode 100644 index 0000000..1d3b87b --- /dev/null +++ b/tests/routes/capacitors/extended-promotional.test.ts @@ -0,0 +1,31 @@ +import { test, expect } from "bun:test" +import { getTestServer } from "tests/fixtures/get-test-server" + +test("GET /capacitors/list JSON response includes is_extended_promotional field", async () => { + const { axios } = await getTestServer() + + const res = await axios.get("/capacitors/list?json=true") + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("capacitors") + expect(Array.isArray(res.data.capacitors)).toBe(true) + + // If there are any capacitors, verify the field exists + if (res.data.capacitors.length > 0) { + const capacitor = res.data.capacitors[0] + expect(capacitor).toHaveProperty("is_extended_promotional") + expect(typeof capacitor.is_extended_promotional).toBe("boolean") + } +}) + +test("GET /capacitors/list with is_extended_promotional filter does not error", async () => { + const { axios } = await getTestServer() + + const res = await axios.get( + "/capacitors/list?json=true&is_extended_promotional=true", + ) + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("capacitors") + expect(Array.isArray(res.data.capacitors)).toBe(true) +}) diff --git a/tests/routes/resistor_arrays/extended-promotional.test.ts b/tests/routes/resistor_arrays/extended-promotional.test.ts new file mode 100644 index 0000000..7dc9e72 --- /dev/null +++ b/tests/routes/resistor_arrays/extended-promotional.test.ts @@ -0,0 +1,30 @@ +import { test, expect } from "bun:test" +import { getTestServer } from "tests/fixtures/get-test-server" + +test("GET /resistor_arrays/list JSON response includes is_extended_promotional field", async () => { + const { axios } = await getTestServer() + + const res = await axios.get("/resistor_arrays/list?json=true") + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("resistor_arrays") + expect(Array.isArray(res.data.resistor_arrays)).toBe(true) + + if (res.data.resistor_arrays.length > 0) { + const resistorArray = res.data.resistor_arrays[0] + expect(resistorArray).toHaveProperty("is_extended_promotional") + expect(typeof resistorArray.is_extended_promotional).toBe("boolean") + } +}) + +test("GET /resistor_arrays/list with is_extended_promotional filter does not error", async () => { + const { axios } = await getTestServer() + + const res = await axios.get( + "/resistor_arrays/list?json=true&is_extended_promotional=true", + ) + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("resistor_arrays") + expect(Array.isArray(res.data.resistor_arrays)).toBe(true) +}) diff --git a/tests/routes/resistors/extended-promotional.test.ts b/tests/routes/resistors/extended-promotional.test.ts new file mode 100644 index 0000000..f4c561f --- /dev/null +++ b/tests/routes/resistors/extended-promotional.test.ts @@ -0,0 +1,31 @@ +import { test, expect } from "bun:test" +import { getTestServer } from "tests/fixtures/get-test-server" + +test("GET /resistors/list JSON response includes is_extended_promotional field", async () => { + const { axios } = await getTestServer() + + const res = await axios.get("/resistors/list?json=true") + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("resistors") + expect(Array.isArray(res.data.resistors)).toBe(true) + + // If there are any resistors, verify the field exists + if (res.data.resistors.length > 0) { + const resistor = res.data.resistors[0] + expect(resistor).toHaveProperty("is_extended_promotional") + expect(typeof resistor.is_extended_promotional).toBe("boolean") + } +}) + +test("GET /resistors/list with is_extended_promotional filter does not error", async () => { + const { axios } = await getTestServer() + + const res = await axios.get( + "/resistors/list?json=true&is_extended_promotional=true", + ) + + expect(res.status).toBe(200) + expect(res.data).toHaveProperty("resistors") + expect(Array.isArray(res.data.resistors)).toBe(true) +})