Data Model - cressie176/Load64 GitHub Wiki

┌────────────────────────────────────────┐                                                                                        ┌───────────────────────────────┐                       ┌─────────────────────────────────────────────────────────────────┐                                                                                                                                                                               
│                                        │                                                                                        │                               │                      ╱│                                                                 │                                                                                                                                                                               
│          LoadC64Configuration          │                                                                                        │      ThirdPartyCatalogue      │┼○───────────────────○─│                    ThirdPartyCatalogueEntry                     │                                                                                                                                                                               
│                                        │                                                                                        │                               │                      ╲├─────────────────────────────────────────────────────────────────┤                                                                                                                                                                               
├────────────────────────────────────────┤                                                                                        ├───────────────────────────────┤                       │                                                                 │                                                                                                                                                                               
│                                        │                                                                                        │                               │                       │ id: integer [pk]                                                │                                                                                                                                                                               
│ game_directory: text [required]        │                                                                                        │ id: integer [pk]              │                       │ game_id: integer [fk, unique(1)]                                │                                                                                                                                                                               
│ server: text                           │                                                                                        │ name: text [unique, required] │                       │ catalogue_id: integer [fk, unique(1)]                           │                                                                                                                                                                               
│ show_spashscreen: boolean [required]   │                                                                                        │                               │                       │ catalogue_entry_id: integer [unique(ThirdParty), required]      │                                                                                                                                                                               
│                                        │                                                                                        │                               │                       │                                                                 │                                                                                                                                                                               
└────────────────────────────────────────┘                                                                                        │                               │                       └─────────────────────────────────────────────────────────────────┘                                                                                                                                                                               
                                                                                                                                  └───────────────────────────────┘                                                       ╲│╱                                                                                                                                                                                                               
                                                                                                                                                                                                                           ○                                                                                                                                                                                                                
                                                                                                                                                                                                                           │                                                                                                                                                                                                                
                                                                                                                                                                                                                           │                                                                                                                                                                                                                
                                                                                                                                                                                                                           │                                                                                                                                                                                                                
                                                                                                                                                           ┌────────────────────────────────────┐                          │                                 ┌───────────────────────────────┐               ┌────────────────────────────────────┐                                                                                         
                                                                                                                                                           │                                    │                          │                                ╱│                               │╲              │                                    │                                                                                         
                                                                                                                                                           │               System               │──┼──────┐                │              ┌────────────────○─│     GameCompilationEntry      │─○────────────┼│          GameCompilation           │                                                                                         
                                                                                                                                                           │                                    │         │                │              │                 ╲│                               │╱              │                                    │                                                                                         
                                                                                                                                                           ├────────────────────────────────────┤         │                │              │                  ├───────────────────────────────┤               ├────────────────────────────────────┤                                                                                         
                                                                                                                                                           │                                    │         │                │              │                  │                               │               │                                    │                                                                                         
                                                                                                                                                           │ id: integer [pk]                   │         │                │              │                  │ id: integer [pk]              │               │ id: integer [pk]                   │                                                                                         
                                                                                                                                                           │ name: systems [unique, required]   │         │                │              │                  │ game_id: integer [fk]         │               │ name: text [unique, required]      │                                                                                         
                                                                                                                                                           │ binary: text                       │         │                │              │                  │ game_compilation_id: integer  │               │                                    │                                                                                         
                                                                                                                                                           │                                    │         │                │              │                  │                               │               └────────────────────────────────────┘                                                                                         
                                                                                                                                                           └────────────────────────────────────┘         │                │              │                  └───────────────────────────────┘                                                                                                                                              
                                                                                                                                                                                                          │                │              │                                                                                                                                                                                                 
                                                                                                                                                                                                          │                │              │                                                                                                                                                                                                 
                                                                                                                                                                                                          │                │              │                                                                                                                                                                                                 
                                                                                                                                                                                                          ○                │              │                                                                                                                                                                                                 
                                                                                                                                                                                                         ╱│╲               ┼              ┼                                                                                                                                                                                                 
                                    ┌───────────────────────────────────────────┐                                                                                                                 ┌────────────────────────────────────────────────┐                                        ┌────────────────────────────────────┐                ┌─────────────────────────────────────────────┐                                           
                                    │                                           │╲                                                                                                                │                                                │                                        │                                    │               ╱│                                             │                                           
                                    │                GameControl                │─○──────────────────────────────────────────────────────────────────────────────────────────────────────────────┼│                      Game                      │┼──────────────────────────────────────┼│               ROMSet               │─────────────┼──│                     ROM                     │                                           
                                    │                                           │╱                                                                                                                │                                                │                                        │                                    │               ╲│                                             │                                           
                                    ├───────────────────────────────────────────┤                                                                                                                 ├────────────────────────────────────────────────┤                                        ├────────────────────────────────────┤                ├─────────────────────────────────────────────┤                                           
                                    │                                           │                                                                                                                 │                                                │                                        │                                    │                │                                             │                                           
                                    │ id: integer [pk]                          │                                                                                                                 │ id: integer [pk]                               │                                        │ id: integer [pk]                   │                │ id: integer [pk]                            │                                           
                                    │ game_id: integer [fk, required]           │                                                                                                                 │ title: text [required]                         │                                        │ game_id: integer [fk]              │                │ romset_id: integer [fk]                     │                                           
                                    │ name: text [unique(game_id), required]    │                                                                                                                 │ sort_title: text [required]                    │                                        │ signature: text [unique, required] │                │ label: text [unique(ROMSet), required]      │                                           
                                    │ description: text                         │                                                                                                                 │ slug: text [unique, required]                  │                                        │                                    │                │ order: integer [unique(ROMSet), required]   │                                           
                                    │                                           │                                                                                                                 │ year: integer                                  │┼───────────────────────┐               └────────────────────────────────────┘                │ hash: text [unique(ROMSet), required]       │                                           
                                    └───────────────────────────────────────────┘                                                                                                                 │ publisher: text                                │                        │                                                                     │ filename: text [unique(ROMSet), required]   │                                           
                                                 ┼                     ┼                                                                                                              ┌──────────┼│ notes: text                                    │                        │                                                                     │                                             │                                           
                                                 ○                     │                                                                                                              │           │ system_id: integer [fk, required]              │                        │                                                                     └─────────────────────────────────────────────┘                                           
                                                 │                     │                                                                                                              │           │ colour_encoding: colour_encodings [required]   │                        │                                                                                                                                                               
                                                 │                     └────────────────────────────┐                                                                                 │           │ true_drive_emulation: boolean [required]       │                        │                                                                                                                                                               
                                                 │                                                  │                                                                                 │           │                                                │                        │                                                                                                                                                               
                                                 │                                                  ○                                                                                 │           └────────────────────────────────────────────────┘                        │                                                                     ┌──────────────────────────────────────────────────┐                                      
                                                 │                                                 ╱│╲                                                                                │                                    ┼                                                 │                                                                    ╱│                                                  │                                      
                                                 │                             ┌─────────────────────────────────────────┐            ┌───────────────────────────────────┐           │                                    │                                                └───────────────────────────────────────────────────────────────────○─│                      Media                       │                                      
                                                 │                             │                                         │╲           │                                   │╲          │                                    │                                                                                                                     ╲│                                                  │                                      
                                                 │                             │              PlayerControl              │─○─────────┼│              Player               │─○─────────┘                                    │                                                                                                                      ├──────────────────────────────────────────────────┤                                      
                                                 │                             │                                         │╱           │                                   │╱                                               │                                                                                                                      │                                                  │                                      
                                                 │                             ├─────────────────────────────────────────┤            ├───────────────────────────────────┤                                                │                                                                                                                      │ id: integer [pk]                                 │                                      
                                                 │                             │                                         │            │                                   │                                                │                                                                                                                      │ game_id: integer [fk, required]                  │                                      
                                                 │                             │ id: integer [pk]                        │            │ id: integer [pk]                  │                                                │                                                                                                                      │ subject: media_subjects [unique(Game), required] │                                      
                                                 │                             │ game_action_id: integer [fk, required]  │            │ game_id: integer [fk]             │                                                │                                                                                                                      │ filename: text [required]                        │                                      
                                                 │                             │ player_id: integer [fk, required]       │            │ port: integer [unique(Game)]      │                                                │                                                                                                                      │                                                  │                                      
                                                 │                             │                                         │            │                                   │                                                │                                                                                                                      └──────────────────────────────────────────────────┘                                      
                                                 │                             └─────────────────────────────────────────┘            └───────────────────────────────────┘                                                └──────────────────────────────────────────────────────────────────────────────┐                                                                                                                                 
                                                 │                                                  ┼                                                                                                                                                                                                     │                                                                                                                                 
                                                 │                                                  ○                                                                                                                                                                                                     │                                                                                                                                 
                                                 │                                                  │                                                                                                                                                                                                     │                                                                                                                                 
                                                 │                      ┌───────────────────────────┘                                                                                                                                                                                                     │                                                                                                                                 
                                                 │                      │                                                                                                                                                                                                                                 │                                                                                                                                 
                                                 ○                      ○                                                                                                                                                                                                                                 │                                                                                                                                 
                                                ╱│╲                    ╱│╲                                                                                                                                                                                                                                │                                                                                                                                 
                                    ┌───────────────────────────────────────────────┐                                                                                                                                                                                                                     │                                                                                                                                 
                                    │                                               │                                                                                                                                                                                                                     │                                                                                                                                 
                                    │             GameControlAssignment             │                                                                                                                                                                                                                     │                                                                                                                                 
                                    │                                               │                                                                                                                                                                                                                     │                                                                                                                                 
                                    ├───────────────────────────────────────────────┤                                                                                                                                                                                                                     ┼                                                                                                                                 
                                    │                                               │                                                                                                                                                                                                       ┌───────────────────────────┐                                                                                                                   
                                    │ id: integer [pk]                              │                                                                                                                                                                                                       │                           │                                                                                                                   
                            ┌──────┼│ game_control_id: integer [fk, required(1)]    │┼─────┐                                                        ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────○┼│    LaunchConfiguration    │┼○─────────────────────────────────────────────────────────────────────────┐                                       
                            │       │ player_control_id: integer [fk, required(1)]  │      │                                                        │                                                                                                                                       │                           │                                                                           │                                       
                            │       │                                               │      │                                                        │                                                                                                                                       ├───────────────────────────┤                                                                           │                                       
                            │       └───────────────────────────────────────────────┘      │                                                        │                                                                                                                                       │                           │                      ┌────────────────────────────────────────────┐       │                                       
                            │                                                              │                                                        │                          ┌────────────────────────────────────────────────────────────────────────────┐                               │ game_id: integer [pk, fk] │                     ╱│                                            │       │                                       
                            │                                                              │                                                        │                          │                                                                            │                               │                           │┼○──────────────────○─│              ProfileSelection              │       │                                       
                            │                                                              │                                                        │                          │                             ControllerControl                              │                               │                           │                     ╲│                                            │       │                                       
                            │                                                              │                                                        │                          │                                                                            │                               └───────────────────────────┘                      ├────────────────────────────────────────────┤       │                                       
                            ○                                                              ○                                                        │                          ├────────────────────────────────────────────────────────────────────────────┤                                             ┼                                    │                                            │       │                                       
                           ╱│╲                                                            ╱│╲                                                       │                          │                                                                            │                                             ○                                    │ id: integer [pk]                           │       │                                       
 ┌─────────────────────────────────────────────────────┐      ┌────────────────────────────────────────────────────────┐                            │                          │ id: integer [pk]                                                           │                                             │                                    │ launch_configuration_id: id [fk, required] │       │                                       
 │                                                     │      │                                                        │                            │                          │ controller_family_id: integer [fk, required(1)]                            │                                             │                                    │ profile_id: integer [fk, required]         │       │                                       
 │                 SystemKeyAssignment                 │      │                JoystickActionAssignment                │                            │                          │ controller_id: integer [fk, required(1)]                                   │                                             │                                    │                                            │       │                                       
 │                                                     │      │                                                        │                            │                          │ name: text [unique(ControllerFamily), unique(Controller), required]        │                                             │                                    └────────────────────────────────────────────┘       │                                       
 ├─────────────────────────────────────────────────────┤      ├────────────────────────────────────────────────────────┤                            │                          │ event: text [required]                                                     │                                             │                                                          ╲│╱                            │                                       
 │                                                     │      │                                                        │                            │                          │ canonical_name: canonical_control_names [required]                         │                                             │                                                           ○                             │                                       
 │ id: integer [pk]                                    │      │ id: integer [pk]                                       │                            │                          │                                                                            │                                             │                                                           │                             │                                       
 │ game_control_assignment_id: integer [fk, required]  │      │ game_control_assignment_id: [fk, required]             │                            │                          └────────────────────────────────────────────────────────────────────────────┘                                             │                                                           │                             │                                       
 │ system_key: system_keys [required]                  │      │ joystick_action: joystick_actions [required]           │                            │                                 ╲│╱                                                 ╲│╱                                                             ○                                                           │                             │                                       
 │                                                     │      │                                                        │                            │                                  ○                                                   ○                                                             ╱│╲                                                          │                             │                                       
 ├─────────────────────────────────────────────────────┤      │                                                        │                            │                                  │                                                   │                                   ┌─────────────────────────────────────────────────────┐                                ┼                             │                                       
 │                                                     │      ├────────────────────────────────────────────────────────┤                            │                                  │                                                   │                                   │                                                     │                ┌───────────────────────────────┐             │                                       
 │ A system key may only be assigned once per game for │      │                                                        │                            │                                  │                                                   │                                   │                    ViceArgument                     │                │                               │             │                                       
 │ game controls, and once per player for player       │      │ A joystick action may only be assigned once per game   │                            │                                  │                                                   │                                   │                                                     │                │            Profile            │             │                                       
 │ controls                                            │      │ for game controls, and once per player for player      │                            │                                  ┼                                                   ┼                                   ├─────────────────────────────────────────────────────┤                │                               │             │                                       
 │                                                     │      │ controls                                               │                            │                  ┌───────────────────────────────┐             ┌───────────────────────────────────────────┐             │                                                     │                ├───────────────────────────────┤             │                                       
 └─────────────────────────────────────────────────────┘      │                                                        │                            │                  │                               │            ╱│                                           │             │ id: integer [pk]                                    │                │                               │             │                                       
                            ┼                                 └────────────────────────────────────────────────────────┘                            │                  │       ControllerFamily        │───────────○─│                Controller                 │             │ profile_id: integer [fk, required(1)]               │╲               │ id: integer [pk]              │             │                                       
                            ○                                                              ┼                                                        │                  │                               │            ╲│                                           │             │ launch_configuration_id: integer [fk, required(1)]  │─○────────────○┼│ name: text [unique, required] │             │                                       
                            │                                                              ○                                                        │                  ├───────────────────────────────┤             ├───────────────────────────────────────────┤             │ name: text [required]                               │╱               │ default: boolean [required]   │             │                                       
                            │                                                              │                                                        │                  │                               │             │                                           │             │ value: text                                         │                │                               │             │                                       
                            │                                                              │                                                        │                  │ id: integer [pk]              │             │ id: integer [pk]                          │             │                                                     │                ├───────────────────────────────┤             │                                       
                            ○                                                              ○                                                        │                  │ name: text [required, unique] │             │ controller_family: integer [fk]           │             └─────────────────────────────────────────────────────┘                │                               │             │                                       
                           ╱│╲                                                            ╱│╲                                                       │                  │ default: boolean [required]   │             │ hardware_guid: text [required, unique]    │                                                                                    │ There can be at most one      │             │                                       
          ┌────────────────────────────────────────────────────────────────────────────────────────────────────────┐                                │                  │                               │             │ name: text [required, unique]             │                                                                                    │ default profile               │             │                                       
          │                                                                                                        │                                │                  ├───────────────────────────────┤             │                                           │                                                                                    │                               │             │                                       
          │                                      ControllerControlAssignment                                       │                                │                  │                               │             └───────────────────────────────────────────┘                                                                                    └───────────────────────────────┘             │                                       
          │                                                                                                        │                                │                  │ There can be at most one      │                                   ┼                                                                                                                ┼                 ┼                     │                                       
          ├────────────────────────────────────────────────────────────────────────────────────────────────────────┤                                │                  │ default controller family     │                                   ○                                                                                                                ○                 ○                     │                                       
          │                                                                                                        │                                │                  │                               │                                   │                                                                                                                │                 │                     │                                       
          │ id: integer [pk]                                                                                       │                                │                  └───────────────────────────────┘                                   │                                                                                                                │                 │                     │                                       
          │ system_key_assignment_id: integer [fk, required(1)]                                                    │                                │                                  ┼                                                   │                                                                                                                │                 │                     │                                       
          │ joystick_action_assignment_id: integer [fk, required(1)]                                               │                                │                                  ○                                                   │                                                                                                                │                 │                     │                                       
          │ canonical_control_name: canonical_control_names [unique(GameControl), unique(PlayerControl), required] │                                │                                  │                                                   │                                                                                                                │                 │                     │                                       
          │                                                                                                        │                                │                                  │                                                   │                                                                                                                │                 │                     │                                       
          └────────────────────────────────────────────────────────────────────────────────────────────────────────┘                                │                                  │                                                   │                                                                                                                │                 │                     │                                       
                                                                                                                                                    │                                  ○                                                   ○                                                                                                                │                 │                     │                                       
                                                                                                                                                    │                                 ╱│╲                                                 ╱│╲                                                                                                               │                 │                     │                                       
                                                                                                                                                    │        ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐                                                                          │                 │                     │                                       
                                                                                                                                                    │       ╱│                                                                                                                   │╲                                                                         │                 │                     │                                       
                                                                                                                                                    └──────○─│                                                EnvironmentVariable                                                │─○────────────────────────────────────────────────────────────────────────┘                 │                     │                                       
                                                                                                                                                            ╲│                                                                                                                   │╱                                                                                           │                     │                                       
                                                                                                                                                             ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤                                                                                            │                     │                                       
                                                                                                                                                             │                                                                                                                   │                                                                                            │                     │                                       
                                                                                                                                                             │ id: integer [pk]                                                                                                  │                                                                                            │                     │                                       
                                                                                                                                                             │ profile_id: integer [fk, required(1)]                                                                             │                                                                                            ○                     ○                                       
                                                                                                                                                             │ launch_configuration_id: integer [fk, required(1)]                                                                │                                                                                           ╱│╲                   ╱│╲                                      
                                                                                                                                                             │ controller_family_id: integer [fk, required(1)]                                                                   │                                                                          ┌─────────────────┴────────────────────────────────────────────────────────────┐
                                                                                                                                                             │ controller_id: integer [fk, required(1)]                                                                          │                                                                          │                                                                              │
                                                                                                                                                             │ name: text [unique(Profile), unique(LaunchConfiguration), unique(ControllerFamily), unique(Controller), required] │                                                                          │                                  KeyMapping                                  │
                                                                                                                                                             │ value: text                                                                                                       │                                                                          │                                                                              │
                                                                                                                                                             │                                                                                                                   │                                                                          ├──────────────────────────────────────────────────────────────────────────────┤
                                                                                                                                                             └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘                                                                          │                                                                              │
                                                                                                                                                                                                                                                                                                                                                            │ id: integer [pk]                                                             │
                                                                                                                                                                                                                                                                                                                                                            │ profile_id: integer [fk, required(1)]                                        │
                                                                                                                                                                                                                                                                                                                                                            │ launch_configuration_id: integer [fk, required(1)]                           │
                                                                                                                                                                                                                                                                                                                                                            │ host_key: host_keys [required, unique(Profile), unique(LaunchConfiguration)] │
                                                                                                                                                                                                                                                                                                                                                            │ system_key [required]                                                        │
                                                                                                                                                                                                                                                                                                                                                            │                                                                              │
                                                                                                                                                                                                                                                                                                                                                            └──────────────────────────────────────────────────────────────────────────────┘
⚠️ **GitHub.com Fallback** ⚠️