Skip to content

Conversation

@jonbarrow
Copy link
Member

Resolves #XXX

Changes:

Updates the gRPC server to match release 2.2.4. Marked as draft because not everything is implemented, and some stuff is stubbed. There also seems to be changes which require updates to the database/schemas, that needs to be talked about. CC @DaniElectra

Namely:

  • What is interval?

  • Is autoDelete supposed to use the built-in Mongo auto deletion? And if so, is it fine that we will be mixing soft deletes with hard deletes?

  • These changes introduce CTR containers. We don't have a schema for this yet, so we need to discuss how we handle that. Because of the lack of schema, the 3DS side of things is not implemented atm

  • I have read and agreed to the Code of Conduct.

  • I have read and complied with the contributing guidelines.

  • What I'm implementing was an approved issue.

  • I have tested all of my changes.

@DaniElectra
Copy link
Member

What is interval?

The interval specifies the period that the console waits before executing a task (downloading BOSS data in this case). This is an optional parameter on the Wii U tasksheet, I assume for overriding the default value that a game sets

Is autoDelete supposed to use the built-in Mongo auto deletion? And if so, is it fine that we will be mixing soft deletes with hard deletes?

I don't know about the details about AutoDelete, I only know this can be exposed on the Wii U tasksheet. I'd say that we store this field as information and not do anything with it server side until we know more

@DaniElectra
Copy link
Member

About the CTR containers, I think it might be best to make two separate file schemas depending on the platform FileCTR and FileWUP, just like we have separated the gRPC.

It's also important to consider all of the technicalities of the 3DS side, since for some operations we need to access some fields from the container itself (such as the payload size for NPFL, and the exposed fields on the gRPC). For this we can consider duplicating this container metadata on the schema for easier access

@jonbarrow
Copy link
Member Author

@DaniElectra The gRPC server is now upgraded to BOSSv2. I've tested that everything compiles, but have not tested them on an actual console (since some of the changes did affect the console endpoints)

@jonbarrow jonbarrow marked this pull request as ready for review November 1, 2025 20:26
@jonbarrow
Copy link
Member Author

Copying this over from Discord for clarity:

From @DaniElectra:
I saw that you didn't update some fields on FileWUP to match those on FileCTR (like attributes being stored individually and the description still being named "password"). I assume this is for preserving the old file database, do we want to keep those names or update them to match those on FileCTR?

Also one note, I believe there should be some files for the previous 3DS notification that we sent (the one for SPR), just something to consider when we migrate to this new scheme

From @jonbarrow:
I was doing it to keep the existing files yeah. We can just nuke the old files though and start from scratch if you'd prefer

Would you like me to just redo the Wii U schema as well and we can just nuke/reseed the old files? Or keep on doing this conversation? Either is fine with me

@jonbarrow jonbarrow requested a review from DaniElectra November 1, 2025 20:28
Also use proper size on content size column.
@DaniElectra
Copy link
Member

Would you like me to just redo the Wii U schema as well and we can just nuke/reseed the old files? Or keep on doing this conversation? Either is fine with me

I think redoing the schema would be best, while we're there we can also solve this TODO:

data_id: Number, // TODO - Wait until https://github.com/typegoose/auto-increment/pull/21 is merged and then change this to BigInt

Before you do that I'm working on some changes and bugfixes in this branch. I'm looking on importing all the known apps from the archival-tools repo to the known apps gRPC. There are some apps whose title ID is unknown though. Would it be fine to import those aswell with title ID set to 0?

@jonbarrow
Copy link
Member Author

I think a title ID of 0 should be fine yeah, sounds good

This allows us to create files targeted to specific countries and/or
languages without any issues such as returning a random language when
none is specified.
Use the JSON list of apps documented on the archival-tools repo as
source for these apps. The title IDs were obtained by querying
tasksheets of these apps, but not all of them were available so the
title ID is set to 0 in those cases.

The title name and region were populated though various public sources,
but they aren't perfect so some names and/or regions are left unknown.
When using this mode, the server only returns the filename, type, size
and attributes of a file.
@DaniElectra
Copy link
Member

DaniElectra commented Nov 2, 2025

I have done my changes, in theory everything should work (it compiles) but haven't tested it. You can remake the schema now

@jonbarrow
Copy link
Member Author

@DaniElectra I've updated the model now, I think that's all that was requested? Also untested, but it compiles and looks correct

Also add attributes support for Wii U.
Having a task file with no payload contents is perfectly valid and
supported officially. This can be used for files where only the metadata
is relevant, such as on Team Kirby Clash Deluxe passwords which are
stored on a file description and the prize comes from the attributes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants