feat: show item renders in public database
This commit is contained in:
@@ -3,6 +3,7 @@ import type { DatabaseFact, DatabaseItem } from '$lib/database/items';
|
||||
import type { GameIconName } from '$lib/game-icons';
|
||||
import { weaponBaseRange } from '$lib/builder/loadout';
|
||||
import { gameDataIconUrl, type GameDataIconType } from '$lib/server/game-data-icons';
|
||||
import { managedImageUrl } from '$lib/server/managed-images';
|
||||
import { getDatabase } from '$lib/server/database';
|
||||
import { getPagination, getRegistrySearch } from '$lib/server/pagination';
|
||||
import { error } from '@sveltejs/kit';
|
||||
@@ -146,7 +147,10 @@ export const load: PageServerLoad = async ({ params, url }) => {
|
||||
}
|
||||
const where = conditions.join(' AND ');
|
||||
countSql = `SELECT COUNT(*) AS total FROM gear item WHERE ${where}`;
|
||||
rowsSql = `SELECT item.* FROM gear item WHERE ${where}
|
||||
rowsSql = `SELECT item.*,render.id AS render_id,render.updated_at AS render_updated_at
|
||||
FROM gear item
|
||||
LEFT JOIN managed_images render ON render.source_entity_type='gear_render' AND render.source_entity_id=item.id
|
||||
WHERE ${where}
|
||||
ORDER BY item.slot,item.tier,item.name COLLATE NOCASE LIMIT ? OFFSET ?`;
|
||||
filters = [
|
||||
{
|
||||
@@ -208,13 +212,14 @@ export const load: PageServerLoad = async ({ params, url }) => {
|
||||
}
|
||||
const where = conditions.join(' AND ');
|
||||
countSql = `SELECT COUNT(*) AS total FROM weapons item WHERE ${where}`;
|
||||
rowsSql = `SELECT item.*,
|
||||
rowsSql = `SELECT item.*,render.id AS render_id,render.updated_at AS render_updated_at,
|
||||
native.damage_min,native.damage_max,native.reference_level,
|
||||
(SELECT COUNT(*) FROM weapon_talent_options options WHERE options.weapon_id=item.id AND options.talent_slot=1) AS talent_1_count,
|
||||
(SELECT COUNT(*) FROM weapon_talent_options options WHERE options.weapon_id=item.id AND options.talent_slot=2) AS talent_2_count,
|
||||
(SELECT COUNT(*) FROM weapon_category_attribute_bonuses bonuses WHERE bonuses.weapon_category=item.category) AS bonus_count
|
||||
FROM weapons item
|
||||
LEFT JOIN weapon_tier_ranges native ON native.weapon_id=item.id AND native.tier=item.native_tier
|
||||
LEFT JOIN managed_images render ON render.source_entity_type='weapon_render' AND render.source_entity_id=item.id
|
||||
WHERE ${where}
|
||||
ORDER BY item.is_exotic DESC,item.category,item.name COLLATE NOCASE LIMIT ? OFFSET ?`;
|
||||
filters = [
|
||||
@@ -481,6 +486,7 @@ export const load: PageServerLoad = async ({ params, url }) => {
|
||||
];
|
||||
return {
|
||||
id: String(row.id), name: String(row.name), kicker: `${row.slot} // T${row.tier}`,
|
||||
renderUrl: row.render_id ? managedImageUrl(String(row.render_id), row.render_updated_at) : '',
|
||||
gameIcon: gearIcon(row.slot),
|
||||
badges: [{ label: `T${row.tier}` }, { label: `${Number(row.tier) === 0 ? 1 : 2} MOD SLOT${Number(row.tier) === 0 ? '' : 'S'}` }],
|
||||
facts: [
|
||||
@@ -507,6 +513,7 @@ export const load: PageServerLoad = async ({ params, url }) => {
|
||||
const level50Damage = row.damage_min === null ? null : weaponBaseRange(row.damage_min, row.damage_max, 50);
|
||||
return {
|
||||
id: String(row.id), name: String(row.name), kicker: `${row.category} // ${row.damage_type}`,
|
||||
renderUrl: row.render_id ? managedImageUrl(String(row.render_id), row.render_updated_at) : '',
|
||||
gameIcon: weaponIcon(row.category),
|
||||
headerBadge: `T${row.native_tier}`,
|
||||
headerMetaIcon: weaponIcon(row.damage_type),
|
||||
|
||||
Reference in New Issue
Block a user