1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-19 03:52:55 +08:00
Commit Graph

918 Commits

Author SHA1 Message Date
Dean Herbert
9dcb20a821 Rename Stable to Legacy and add xmldoc 2021-11-25 15:39:05 +09:00
Dean Herbert
6cab7b877d Move stable import handling into its own class 2021-11-25 15:36:58 +09:00
Dean Herbert
bcdb73e1e8 Clean up files last 2021-11-25 14:28:27 +09:00
Dean Herbert
315e126497 Add automatic clean-up call for RealmFileStore 2021-11-25 14:17:44 +09:00
Dean Herbert
fd321109da Remove unnecessary virtual specification on Refresh 2021-11-25 14:06:12 +09:00
Dan Balasescu
1865227e08
Merge pull request #15773 from peppy/remove-model-file-list-inits
Initialise `IHasFiles<TFile>.Files` lists at construction time
2021-11-24 21:05:36 +09:00
Dean Herbert
052ed8f930 Add online status to RealmBeatmapSet 2021-11-24 18:48:02 +09:00
Dean Herbert
ddbd4f9473 Merge branch 'master' into remove-model-file-list-inits 2021-11-24 18:39:01 +09:00
Dan Balasescu
c4b5a07f4b
Merge branch 'master' into realm-move-data-migration-to-context-factory 2021-11-24 14:40:26 +09:00
Dean Herbert
99a139dc98 Initialise all file lists at construction time (and remove setter) 2021-11-24 13:56:21 +09:00
Dan Balasescu
5a0a95f9d4 Trim whitespace 2021-11-24 13:48:59 +09:00
Dean Herbert
6aed41eacc
Merge branch 'master' into realm-move-data-migration-to-context-factory 2021-11-24 12:38:44 +09:00
Dean Herbert
63b09b356f Rewrite commments to read better 2021-11-24 12:37:09 +09:00
Dean Herbert
6cd1bfd94f Remove outdated comment 2021-11-24 12:35:05 +09:00
Bartłomiej Dach
0d409fa33e
Merge branch 'master' into realm-ruleset-keybinding-short-name 2021-11-23 20:18:58 +01:00
Dean Herbert
6b134359c9 Handle the case where the ruleset isn't found in the EF database any more 2021-11-23 19:15:52 +09:00
Dean Herbert
4149d458f0 Move realm data migrations inside the RealmContextFactory 2021-11-23 18:14:15 +09:00
Dean Herbert
d9917ee6c7 Merge branch 'realm-ruleset-setting-short-name' into realm-ruleset-keybinding-short-name 2021-11-23 18:13:26 +09:00
Dean Herbert
40cd998f99 Fix incorrect disposal 2021-11-23 18:13:05 +09:00
Dean Herbert
782191c410 Merge branch 'realm-ruleset-setting-short-name' into realm-ruleset-keybinding-short-name 2021-11-23 17:48:48 +09:00
Dean Herbert
b1b6723826 Add xmldoc and verbatim string markers 2021-11-23 17:47:43 +09:00
Dean Herbert
505fede44d Pass the full EF context rather than a legacy RulesetStore 2021-11-23 17:40:20 +09:00
Dean Herbert
d94b27a8a2 Switch realm ruleset key bindings to use ruleset's ShortName as key 2021-11-22 18:52:30 +09:00
Dean Herbert
329bae50b0 Switch realm ruleset configuration to use ruleset's ShortName as key 2021-11-22 18:52:00 +09:00
Dean Herbert
ca26b6c540 Provide RealmContextFactory with the EF RulesetStore for migration purposes 2021-11-22 18:51:44 +09:00
Dean Herbert
d2062ff97f Reformat realm migrations list for legibility 2021-11-22 18:47:18 +09:00
Dean Herbert
361cb78880 Fix realm applying migrations from one version too early 2021-11-22 18:46:46 +09:00
Dean Herbert
83b4625bd5 Replace existing cases with new helper method 2021-11-19 22:15:41 +09:00
Dean Herbert
eecf6ad558 Add IsManaged helper method to EF classes to match realm implementation 2021-11-19 21:56:06 +09:00
Dean Herbert
59e763467f Move StoragePath implementation to an extension method 2021-11-19 16:08:38 +09:00
Dean Herbert
726a0cc091 Merge branch 'master' into beatmap-collection-inteface-types 2021-11-16 15:31:10 +09:00
Dean Herbert
a4c11e8813 Use extension method to compare online IDs 2021-11-15 14:34:50 +09:00
Bartłomiej Dach
e66b637587
Merge branch 'master' into fix-android-score-imports 2021-11-12 11:40:15 +01:00
Dean Herbert
692e846acd Rename BeatmapSetInfo.OnlineBeatmapSetID to OnlineID to match interface 2021-11-12 17:52:44 +09:00
Dean Herbert
6a098a8634 Rename BeatmapInfo.OnlineBeatmapID to OnlineID to match interface 2021-11-12 17:46:24 +09:00
Dean Herbert
adf81d7fcd Add pathway to correctly handle stream-based imports which are not zip archives 2021-11-12 16:42:07 +09:00
Dean Herbert
ad8a710a69 Fix failed imports being incorrectly considered as successfully importing for notification purposes 2021-11-12 16:10:46 +09:00
Bartłomiej Dach
5ec8288508
Add GetDisplayString() extension to handle all model interface types globally 2021-11-09 13:53:07 +01:00
Dean Herbert
dfbc1f3394 Fix "conflicting" variable name 2021-11-09 17:42:03 +09:00
Dean Herbert
999d625e76 Fix realm migration potentially failing for users that haven't run osu! in a long time
As reported at https://github.com/ppy/osu/discussions/15530.
2021-11-09 14:51:10 +09:00
Dean Herbert
78aef9ce86
Merge branch 'master' into remove-stupid-weak-reference-bindable-events 2021-11-08 13:35:49 +09:00
Dean Herbert
89cc2523ef Fix incorrectly specified events 2021-11-06 22:31:49 +09:00
Dean Herbert
2881ce0f5a Merge branch 'master' into remove-stupid-weak-reference-bindable-events 2021-11-06 14:08:39 +09:00
Dean Herbert
9a7c75508e Merge branch 'master' into user-class-cleanup 2021-11-05 19:56:18 +09:00
Dean Herbert
54f72d68ca Revert weird event flow in model manager/importers 2021-11-05 19:12:49 +09:00
Salman Ahmed
771bcbf868 Rename one more clashing variable 2021-11-05 12:24:07 +03:00
Dean Herbert
6c385ccd29 Move second generic to abstract model downloader rather than interface type 2021-11-05 17:37:05 +09:00
Dean Herbert
99df37f32d Add input generic type to IModelDownloader 2021-11-05 17:02:45 +09:00
Dean Herbert
846c80f12c Rename remaining clashing variables to appease CI somewhere 2021-11-05 17:02:24 +09:00
Dean Herbert
7772a97cf7 Add helper function to get realm class names rather than hard-coding each time 2021-11-05 17:01:00 +09:00
Dean Herbert
1fe9bca819 Change ModelDownloader's requirement to an IModelImporter rather than IModelManager 2021-11-05 16:47:18 +09:00
Dean Herbert
b90f44493c Remove importer inheritance from IModelManager
Now only exists in legacy implementations, to reduce inheritance
complexity of interfaces which are going to be used going forwards.
2021-11-05 16:45:38 +09:00
Dean Herbert
7acc4a4708 Refactor realm migrations to be a touch more legible 2021-11-04 18:57:54 +09:00
Dean Herbert
777b2cbcc4 Add realm migration for new author storage 2021-11-04 18:57:54 +09:00
Dean Herbert
b9983add15 Rename User to APIUser and move to correct namespace 2021-11-04 18:21:31 +09:00
Dean Herbert
ca438a102d Fix beatmap paths including invalid slash/backslash characters 2021-11-03 16:46:05 +09:00
Dan Balasescu
c51349de57
Merge pull request #15358 from peppy/online-id-potentially-zero
Add a note about `OnlineID` potentially being zero in non-autoincrement cases
2021-11-01 15:54:08 +09:00
Dean Herbert
19feae4a8e
Merge branch 'master' into beatmap-refactor/download-tracker 2021-11-01 13:15:36 +09:00
Bartłomiej Dach
b0c4fa662d
Merge branch 'master' into long-online-id-score-info 2021-10-30 14:35:30 +02:00
Dean Herbert
aff216840f Add a note about OnlineID potentially being zero in non-autoincrement cases 2021-10-29 16:54:03 +09:00
Dean Herbert
3b095e1626 Merge branch 'master' into beatmap-refactor/download-tracker 2021-10-29 11:50:54 +09:00
Dean Herbert
34d4715220 Allow for long online IDs and implement in ScoreInfo 2021-10-29 11:48:36 +09:00
Dean Herbert
3838fe5c6a Fix typo in variable name 2021-10-29 11:39:15 +09:00
Dean Herbert
8d21f0b04b Add migration to reset conflicting scroll speed key bindings 2021-10-29 11:14:22 +09:00
Dean Herbert
add39fbd4f Merge branch 'master' into fix-skin-layout-editor-crash 2021-10-28 06:24:24 +09:00
Dean Herbert
617e6febb6 Refactor ModelDownloader to allow for different OnlineID matching 2021-10-27 21:00:46 +09:00
Dean Herbert
9015ac6ba8 Implement new version of download tracker 2021-10-27 21:00:46 +09:00
Dean Herbert
95837990f3 Apply some second-pass inspections that appeared after previous changes 2021-10-27 13:09:30 +09:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Dean Herbert
370775af68 Fix some surrounding code formatting 2021-10-26 14:05:07 +09:00
Dean Herbert
26cf5370c3 Remove unused reader parameter 2021-10-24 23:48:46 +09:00
Susko3
51c5d0aec7 Update to be in line with framework changes 2021-10-24 13:21:41 +02:00
Susko3
4a425b5c3e Merge remote-tracking branch 'upstream/master' into use-ShowFileInNativeExplorer 2021-10-23 10:01:24 +02:00
Dean Herbert
eef9949a0a Remove unnecessary branching around EF logic 2021-10-22 14:48:20 +09:00
Dean Herbert
59b7210efa Revert disallowing imports with no files
While it is logical that we want this, from a testing perspective this is a bit of a nightmare to fix. Let's revisit at a later point in time.
2021-10-21 13:43:42 +09:00
Dean Herbert
9e6e41d7c0 Add migration to reset and repopulate existing skin hashes 2021-10-20 17:56:45 +09:00
Dean Herbert
439e90fce3 Disallow archive imports with no hashable files 2021-10-20 17:45:06 +09:00
Dean Herbert
789c715f13 Add skin.ini write support to allow for more correct hashing 2021-10-20 17:45:06 +09:00
Dan Balasescu
08f3bc3f44
Merge pull request #15120 from peppy/realm-importer
Implement realm beatmap importer
2021-10-20 16:44:16 +09:00
Dean Herbert
da750a74fc Add xmldoc mention of valid OnlineID values 2021-10-20 15:24:27 +09:00
Dean Herbert
d3ab45084d Fix realm migration potentially failing from older releases 2021-10-19 14:19:58 +09:00
Dean Herbert
6904938dc1 Merge branch 'realm-indexed-online-id' into realm-importer 2021-10-18 16:14:37 +09:00
Dean Herbert
88a575462c Work around weird null inspection 2021-10-18 16:11:55 +09:00
Dean Herbert
2c5ba1d8e2 Change OnlineID to non-nullable to allow for indexing in Realm 2021-10-18 15:53:40 +09:00
Dean Herbert
3c4c9ab7a7 Move ICanAcceptFiles specification to IModelImporter<TModel> 2021-10-18 14:25:51 +09:00
Susko3
25f172fae8 Update usages of OpenInNativeExplorer to use ShowFileInNativeExplorer
Also updates WrappedStorage to override ShowFileInNativeExplorer.
2021-10-17 12:56:29 +02:00
Dean Herbert
49969ac328 Add beatmap import and file store tests 2021-10-15 17:07:34 +09:00
Dean Herbert
d95a62fa56 Add models and stores for beatmap manager requirements 2021-10-15 16:58:41 +09:00
Dan Balasescu
05150b34e5
Merge pull request #15117 from peppy/update-present-import-post-import
Update one missed instance of `PresentImport`
2021-10-15 16:57:47 +09:00
Dean Herbert
e9c3d09e0e Remove redundant specs 2021-10-15 16:27:16 +09:00
Dean Herbert
fdb734ac91 Also add spec directly to IModelImporter 2021-10-15 16:24:40 +09:00
Dean Herbert
818fac6ac8 Make realm a non-drawable component to better order disposal
Until now, the `RealmContextFactory` would be disposed as part of the
drawable hierarchy. This is too early, as it may be being used by higher
level components (like `ConfigManager`s, see #15115) that perform final
operations after the drawables have been disposed.

Seems to make sense moving this out of the drawable hierarchy and in
line with how we were doing things with EF.
2021-10-15 13:58:16 +09:00
Dean Herbert
93d7cdc509 Don't check whether the source realm was closed or not
Based on what we now know, this is not required, as long as there is
another realm context open on the same thread.
2021-10-13 15:50:06 +09:00
Dean Herbert
f5f0486e18
Merge branch 'master' into realm-live 2021-10-13 15:24:34 +09:00
Dan Balasescu
df5a76ad9d
Merge pull request #15041 from peppy/realm-file-store
Add realm `FileStore`
2021-10-13 13:54:56 +09:00
smoogipoo
cf10239e70 Add a few nullabilities and DCC excludes 2021-10-13 12:51:46 +09:00
Dean Herbert
f69a56a26a Add test coverage of startup import sequence 2021-10-13 12:19:10 +09:00
Dean Herbert
e468bfb31c
Merge branch 'master' into realm-file-store 2021-10-12 23:11:02 +09:00
Dan Balasescu
7bb401b974
Merge pull request #15040 from peppy/realm-test-game-host
Update realm tests to run inside a `GameHost` to allow running on update thread
2021-10-12 21:16:06 +09:00
Dean Herbert
b01d82b3fd Add RealmLive implementation 2021-10-11 15:36:41 +09:00
Dean Herbert
6ca415da9f Add basic realm models
Only the file related ones are really required outside of tests, but
seems like as good an opportunity as ever to get the rest of the models
into the game project.
2021-10-11 15:25:04 +09:00
Dean Herbert
f43badabf4 Add back update thread verification in RealmContextFactory 2021-10-11 15:20:12 +09:00
Dean Herbert
c7675be3ef Fix typo in IModelImporter's xmldoc 2021-10-11 15:12:51 +09:00
Dan Balasescu
4bbff2ebf7
Merge branch 'master' into new-interfaces 2021-10-06 11:38:17 +09:00
Dan Balasescu
9491e5a547
Merge pull request #14954 from peppy/rename-result-response
Rename `APIRequest.Result` to `Response`
2021-10-06 10:52:33 +09:00
Dean Herbert
1e4da81120 Fix import notifications not showing correct text 2021-10-05 17:14:09 +09:00
Dean Herbert
b41fa41c85 Rename APIRequest.Result to Response 2021-10-05 14:28:56 +09:00
Dean Herbert
1d99bc280f Merge branch 'master' into new-interfaces 2021-10-04 20:42:40 +09:00
Dean Herbert
63f0b0c932 Rename out of place interface name 2021-10-04 16:35:55 +09:00
Dean Herbert
857000b756 Mark IPresentImports as covariant 2021-10-04 16:29:46 +09:00
Dean Herbert
3c15ef720f Remove setter from IHasGuidPrimaryKey interface 2021-10-04 16:26:28 +09:00
Dean Herbert
916342c837 Merge branch 'master' into importer-returns-live 2021-10-04 16:24:26 +09:00
Dan Balasescu
aca2f0c12d
Merge pull request #14901 from peppy/model-importer-split
Split importer interface out of `IModelManager`
2021-10-04 16:22:29 +09:00
Dean Herbert
682fe5be78
Merge branch 'master' into realm-context-factory-safer-blocking 2021-10-02 00:30:09 +09:00
Dean Herbert
b1f9bbdc69
Merge branch 'master' into model-importer-split 2021-10-02 00:29:29 +09:00
Dan Balasescu
a620b55d55
Merge pull request #14900 from peppy/model-downloader-split
Split `ArchiveModelManager` into two pieces
2021-10-01 23:16:09 +09:00
Dan Balasescu
d24f89fead
Merge pull request #14906 from peppy/update-realm-context-factory
Refine `RealmContext` implementation
2021-10-01 22:57:03 +09:00
Dean Herbert
a32f5d44e2
Improve clarity of xmldoc
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-10-01 22:23:51 +09:00
Dean Herbert
d309636460 Update all EF based models to implement new read only interfaces 2021-10-01 16:55:50 +09:00
Dean Herbert
74841cf1a9 Merge branch 'update-realm-context-factory' into realm-context-factory-safer-blocking 2021-10-01 03:54:31 +09:00
Dean Herbert
b51fd00ba3 Guard against disposal in all context retrievals 2021-10-01 03:46:53 +09:00
Dean Herbert
8557530cd5 Add back main context locking 2021-10-01 03:45:00 +09:00
Dean Herbert
cfd3bdf888 Ensure realm blocks until all threaded usages are completed 2021-10-01 01:34:35 +09:00
Dean Herbert
9fa901f6aa Refine RealmContext implementation API 2021-09-30 23:56:38 +09:00
Dean Herbert
a2e61883e3 Initial push to use ILive in import process 2021-09-30 22:55:25 +09:00
Dean Herbert
66409147dc Remove duplicate interface specification 2021-09-30 19:25:08 +09:00
Dean Herbert
c05a8fc4a2 Split importer interface out of IModelManager 2021-09-30 18:52:09 +09:00
Dean Herbert
3e3b9bc963 Split out IModelDownloader and also split apart ScoreManager 2021-09-30 18:25:20 +09:00
Dean Herbert
0a00bc7795 Split out IPostNotifications into an interface 2021-09-30 18:21:34 +09:00
Dean Herbert
5618c9933b Expose more pieces of ArchiveModelManager via interfaces 2021-09-30 16:44:39 +09:00
Dean Herbert
d4310f5d9a Move database connection string operations local
In line with framework changes in
https://github.com/ppy/osu-framework/pull/4793.
2021-09-27 17:32:41 +09:00
Dean Herbert
edb1230111 Fix potential nullref throw on failed startup 2021-09-16 22:48:09 +09:00
Dean Herbert
5bb741b4e8 Remove migration of key bindings 2021-09-15 17:04:38 +09:00
Dean Herbert
fed0e15cea Fix typo in ArchiveModelManager 2021-08-23 20:23:46 +09:00
Dean Herbert
4bf22db4ff Attempt to reduce skin lookup overhead where file access is not required 2021-08-17 00:23:30 +09:00
Dean Herbert
d9b5f235d8 Add xmldoc explaining thread safety limitations of IModelManager "events" 2021-08-10 17:36:59 +09:00
Dean Herbert
459f9a0465 Handle nulls and fix missing documentation 2021-07-05 21:35:37 +09:00
Dean Herbert
9c311a6d8a Add ability to lookup multiple users at once to UserLookupCache 2021-07-05 19:56:16 +09:00
Dean Herbert
1e4beddd2d Disable foreign key enforcing at an sqlite level 2021-07-05 15:41:48 +09:00
Dan Balasescu
b82afaddc1
Merge pull request #13767 from peppy/fix-realm-refresh-race
Fix thread safety of realm `Refresh` operation
2021-07-05 13:53:29 +09:00
Dean Herbert
f510ef9153 Move previousContext assign within lock to make things look safer
Not an actual requirement, but no harm.
2021-07-05 10:49:56 +09:00
Bartłomiej Dach
3291f15dcc Mention GetForWrite() as another alternative to Context accesses 2021-07-04 12:08:15 +02:00
Bartłomiej Dach
b89521314f Mention alternatives to Context when not on update thread in xmldoc 2021-07-04 12:07:34 +02:00
Dean Herbert
3ec7dc3bb9 Update tests in line with thread safety check 2021-07-04 17:59:39 +09:00
Dean Herbert
567e9f33a9 Fix thread safety of realm Refresh operation
Due to the lack of locking, there was a chance the the update thread
`context` was retrieved just before the `flushContexts` call, followed
by `.Refresh()` being run while the blocking behaviour was invoked.

This can be seen in test failures such as
https://ci.appveyor.com/project/peppy/osu/builds/39859786/tests.

As an aside, I tried multiple different methods to avoid `lock()` on the
update thread but they felt flaky. The overhead of lock when there's no
contention is reportedly around 30-50ns, so likely not of concern. We
can address it at a later point if it becomes one.
2021-07-04 16:24:43 +09:00
Bartłomiej Dach
8a23dfa6f5 Fix optimised import path buffering events without flush 2021-07-03 17:58:12 +02:00
Dean Herbert
2f1203085b Also add logging of realm block/flush operations 2021-06-29 20:23:25 +09:00
Dan Balasescu
a9084db665
Merge pull request #13673 from peppy/import-early-checksum-abort
Shortcut import process to speed up duplicate imports
2021-06-28 19:55:09 +09:00
Dan Balasescu
92fcf90768
Merge branch 'master' into import-early-checksum-abort 2021-06-28 19:29:08 +09:00
Dean Herbert
d4ea73d727 Simplify disposal exceptions 2021-06-28 16:17:09 +09:00