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
Dean Herbert
f78cedd0e1
Reorder methods and add xmldoc for BlockAllOperations
2021-06-28 16:16:40 +09:00
Dean Herbert
90f0bc87f5
Add safety against double disposal
2021-06-28 16:12:21 +09:00
Dean Herbert
842f033522
Remove no longer necessary exception
2021-06-28 16:11:55 +09:00
Dean Herbert
0d2bc4fc5f
Merge branch 'master' into fix-realm-state-change-crashes
2021-06-28 16:03:58 +09:00
Dean Herbert
c281e43cd8
Remove Dispose()
special case and add explicit exception to make debugging issues non-deadlock
2021-06-28 15:04:14 +09:00
Dean Herbert
a3946a1265
Fix typo in newly added xmldoc
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2021-06-28 14:07:21 +09:00
Dean Herbert
4d6002ab88
Remove redundant string interpolation (and mark all local logging strings as verbatim)
2021-06-28 12:16:15 +09:00
Dean Herbert
4a557e73a7
Add logging to help understand existing case skips better
2021-06-28 10:42:42 +09:00
Dean Herbert
90b87cbb9e
Add back unidirectional online id check
2021-06-28 10:11:27 +09:00
Dean Herbert
9a96cd4a1d
Revert "Remove comparison of online beatmap IDs during dedupe checks"
...
This reverts commit 15af28d2a0
.
2021-06-28 09:54:18 +09:00
Dean Herbert
e755dcc34d
Add log method for new flow
2021-06-27 20:37:12 +09:00
Dean Herbert
f470b7095d
Move private method down in class
2021-06-27 20:36:01 +09:00
Dean Herbert
f216404952
Fix missing undelete call on using existing
2021-06-27 20:22:48 +09:00
Dean Herbert
9120321731
Add comments mentioning shortcomings and avoid potential double check
2021-06-27 19:07:35 +09:00
Dean Herbert
44f875b802
Bypass optimised existing check in SkinManager
(due to custom hashing function)
2021-06-27 16:35:13 +09:00
Dean Herbert
e493685c14
Add optimised existing check earlier in import process
2021-06-27 16:34:40 +09:00
Dean Herbert
15af28d2a0
Remove comparison of online beatmap IDs during dedupe checks
2021-06-27 14:48:57 +09:00
Dean Herbert
d1f852d102
Make Populate
abstract to avoid unnecessary base call async complexity
2021-06-27 14:29:02 +09:00
Dean Herbert
63ab40ec24
Fix potential deadlocking behaviour (and convert ResetEvent
to Semaphore
)
2021-06-24 14:37:26 +09:00
Dean Herbert
df703b68ec
Merge branch 'master' into realm-key-binding-store
2021-05-25 13:41:48 +09:00