1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-18 17:13:20 +08:00
Commit Graph

1210 Commits

Author SHA1 Message Date
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
Dean Herbert
8f5b28d264 Fix "folder missing" message showing incorrectly for beatmaps folder 2021-05-20 13:56:18 +09:00
Lucas A
8530b31e39 Use bitshifts for enum values instead of literal values. 2021-05-17 21:02:45 +02:00
Lucas A
97952bc3f0 Fix backwards stable install resolution logic. 2021-05-17 18:39:04 +02:00
Lucas A
6110a847aa Simplify import ordering logic by making beatmapImportTask non-nullable. 2021-05-17 16:30:13 +02:00
Lucas A
41fafdf643 Remove now unreachable code paths. 2021-05-17 12:55:59 +02:00
Lucas A
dabe8bd4c7 Fix code inspections and remove now unused code. 2021-05-17 12:55:58 +02:00
Lucas A
a7b740fd1d Reword ImportFromStablePopup and display the popup regardless of whether a stable install is detected. 2021-05-17 12:55:58 +02:00
Lucas A
8ba50b1854 Bring back injected dependency incorrectly marked as unused. 2021-05-17 12:55:58 +02:00
Lucas A
481b0a0125 Add StableDirectoryLocationDialog 2021-05-17 12:55:57 +02:00
Lucas A
325a689d65 Order imports depending on beatmap imports if any is running. 2021-05-17 12:55:57 +02:00
Lucas A
851e33fd15 Hook up StableImportManager. 2021-05-17 12:55:57 +02:00
Lucas A
5d5b1e1f0e Add StableImportManager 2021-05-17 12:55:56 +02:00
Dean Herbert
1742ee89e0 Fix incorrect xmldoc for DeleteFile 2021-05-11 18:39:14 +09:00
Dean Herbert
05e3a73a7d Fix import cancellation not correctly being forwarded to import notification 2021-04-28 16:09:50 +09:00
smoogipoo
6560dc2d1f Fix exported replays being wrapped in zip packages 2021-04-26 20:46:44 +09:00
Dean Herbert
b9ee63ff89 Remove public keywords from interface implementations 2021-04-24 02:13:31 +09:00
Dean Herbert
ecde6137e0 Add missing active usage counter increment 2021-03-31 15:16:01 +09:00
Dean Herbert
37bf79e8a4 Remove unused automapper setup for the time being 2021-03-31 15:10:05 +09:00
Dean Herbert
f8cea5cae3 Merge branch 'master' into realm-migration-operation-blocking 2021-03-26 17:07:31 +09:00
Bartłomiej Dach
a16c0641b2 Revert EF Core to version 2.2
This reverts commit f3faad74d5, reversing
changes made to 712e7bc7bf.

Several issues arose after migrating to 5.0, including, but possibly not
limited to, performance regressions in song select, as well as failures
when attempting to save beatmaps after metadata changes in the editor.
2021-03-21 11:05:15 +01:00
Dean Herbert
03592fa696 Merge branch 'master' into realm-migration-operation-blocking 2021-03-19 21:33:26 +09:00
Dean Herbert
1e519f0d31 Fix seemingly innocent logic change causing breakage in score imports 2021-03-15 14:20:59 +09:00
Dean Herbert
fce21f23d6 Add comments marking workarounds required for EFcore 5 2021-03-15 13:29:26 +09:00
Dean Herbert
2904f479c6 Share file lookup workaround in ArchiveModelManager with workaround extensions class 2021-03-15 13:26:14 +09:00
Dean Herbert
79d3379f55 Reformat application of configuration 2021-03-15 13:20:22 +09:00
Dean Herbert
8a35533889 Add fall-through case to catch a potential requery for unsupported model type 2021-03-15 13:11:58 +09:00
Dean Herbert
2bdffd1004 Move skin requery logic into extension methods 2021-03-15 13:11:58 +09:00
Dean Herbert
900da7b891 Rename and refactor extenion methods to be easier to read 2021-03-15 13:11:58 +09:00
Roman Kapustin
28ef64b62a Explicitly specify SingleQuery behavior 2021-03-14 21:43:27 +03:00
Roman Kapustin
0a1e325fc7 Extract requerying of navigational properties from DbContext 2021-03-14 19:34:53 +03:00
Roman Kapustin
5a4b0174b1 Ignore MultipleCollectionIncludeWarning 2021-03-11 22:40:35 +03:00
Roman Kapustin
47b80d2474 Workaround InvalidOperation exceptions 2021-03-11 20:51:54 +03:00
Roman Kapustin
f1302d1600 Update Microsoft.EntityFrameworkCore 2021-03-11 19:23:56 +03:00
Dean Herbert
b1cd01ceb8 Apply ConfigureAwait changes to game side 2021-03-08 14:36:35 +09:00
Dean Herbert
fa95929121 Remove easy to remove finalizers 2021-03-02 16:07:09 +09:00
Dean Herbert
7e6bd0e995 Fix "failed to import" message showing when importing from a stable install with no beatmaps 2021-02-26 17:30:59 +09:00
Dean Herbert
0196ee882a Redirect batch imports to a separate task scheduler to avoid contention with interactive actions 2021-02-17 19:41:18 +09:00
Dean Herbert
c1db33e075 Improve some xmldoc on ArchiveModelManager for methods which are not going to trigger user interactive flow 2021-02-17 19:40:56 +09:00
Dean Herbert
a080a9bdbc
Merge pull request #11603 from Game4all/handle-stable-imports-custom-songs-folder
Handle beatmap import from a stable installation with a custom Songs directory
2021-02-12 21:42:36 +09:00
Dean Herbert
5f23bd7259 Revert most of the changes to ArchiveModeManager by using better code 2021-02-12 12:48:32 +09:00
Lucas A
383c40b992 Address remaining reviews suggestions. 2021-01-26 20:35:42 +01:00
Lucas A
043385f919 Rename const and fix unintended tabbing. 2021-01-26 18:45:04 +01:00
Lucas A
9f9206726a Fix typos. 2021-01-26 18:11:54 +01:00
Lucas A
51d4da565c Fix ArchiveModelManagers lookup paths. 2021-01-24 22:25:49 +01:00
Lucas A
d71ac83428 Use StableStorage in ArchiveModelManager. 2021-01-24 19:46:10 +01:00
Dean Herbert
d69a4914e0 Add method to block all realm access during migration operation 2021-01-22 17:28:47 +09:00
Dean Herbert
47a9d2b1c2 Add missing licence header 2021-01-21 20:53:16 +09:00
Dean Herbert
34a7ce912e Correctly close context before attempting migration 2021-01-21 19:02:09 +09:00
Dean Herbert
f6c2009509 Remove unused using 2021-01-19 20:10:10 +09:00
Dean Herbert
68f2e7f61a Use realm support for Guid 2021-01-19 18:22:36 +09:00
Dean Herbert
f1a785f407 Merge branch 'master' into realm-key-binding-store 2021-01-19 18:22:34 +09:00
Salman Ahmed
dc91cebce9 Merge branch 'master' into multiplayer-beatmap-tracker 2021-01-18 19:15:45 +03:00
Bartłomiej Dach
1d7be6a604 Merge branch 'master' into android-multiple-import-support-suppot 2021-01-16 23:13:11 +01:00
Salman Ahmed
96feaa027d Make ArchiveModelManager import method overridable (for testing purposes) 2021-01-17 00:01:11 +03:00
Bartłomiej Dach
7296a6dd84 Merge branch 'master' into realm-key-binding-store 2021-01-16 16:48:54 +01:00
Bartłomiej Dach
ddc63662ba Dispose realm in RealmWriteUsage cleanup 2021-01-16 16:39:04 +01:00
Dean Herbert
86f66727de Update KeyBinding usages in line with interface changes 2021-01-15 14:57:01 +09:00
Dean Herbert
3e366b1f15 Ensure the main realm context is closed when the factory is disposed 2021-01-15 14:26:06 +09:00
Dean Herbert
df08d964a5 Mark the types which have been migrated in OsuDbContext 2021-01-14 16:31:18 +09:00
Dean Herbert
8a08d3f4ef Fix transactions not actually being committed 2021-01-14 16:13:10 +09:00
Dean Herbert
af1509d892 Remove unused variable (but add back pending writes counter) 2021-01-14 15:51:19 +09:00
Dean Herbert
674e78fd93 Fix broken xmldoc 2021-01-13 18:38:30 +09:00
Dean Herbert
9bf9a8c351 Remove Live<> wrapper until it is needed 2021-01-13 18:36:37 +09:00
Dean Herbert
8442b34e84 Tidy up write usage class 2021-01-13 18:36:37 +09:00
Dean Herbert
5fa3a22f28 Remove unused RealmBackedStore base class 2021-01-13 18:36:37 +09:00
Dean Herbert
9d744d629f Update existing usages to use the main realm context where applicable 2021-01-13 18:36:37 +09:00
Dean Herbert
542f535247 Pull out thread local contexts and have main realm refresh in update loop 2021-01-13 18:36:37 +09:00
Dean Herbert
192e58e0c6 Update all read queries to use direct realm subscriptions/queries 2021-01-13 18:36:37 +09:00
Dean Herbert
46a1d99c74 Allow detach to be run against an IQueryable directly 2021-01-12 17:01:16 +09:00
Dean Herbert
f0a9688baa Remove unnecessary mapped type 2021-01-12 15:50:09 +09:00
Dean Herbert
7769d95e7b Add xmldoc for extension methods 2021-01-12 15:48:26 +09:00
Dean Herbert
ff16d2f490 Mark classes nullable 2021-01-12 15:21:02 +09:00
Dean Herbert
2e4c3c8e39 Avoid closing initial context after migrations (unnecessary) 2021-01-12 14:45:36 +09:00
Dean Herbert
0dca9c8c46 Tidy up RealmContextFactory; remove delete/dispose method which wouldn't work due to threading 2021-01-12 14:45:36 +09:00
Dean Herbert
8cbad1dc1c Add logging of opened and created contexts 2021-01-12 14:45:36 +09:00
Dean Herbert
ffb42c37df Move schema version to const 2021-01-12 14:45:36 +09:00
Dean Herbert
0789621b85 Elaborate on comment mentioning migrations 2021-01-12 14:45:36 +09:00
Dean Herbert
fc55d67c66 Add helper method for detaching lists from realm 2021-01-12 14:45:36 +09:00
Dean Herbert
d810af82ec Expose Live.Detach() method for ease of use 2021-01-12 14:45:36 +09:00
Dean Herbert
dd50b5870e Move extensions methods into own class 2021-01-12 14:45:36 +09:00
Dean Herbert
6736db327a Remove scheduler being passed in for now 2021-01-12 14:45:36 +09:00
Dean Herbert
a13b6abcff Remove incorrect default specification from IRealmFactory interface 2021-01-12 14:45:36 +09:00
Dean Herbert
70689eee2b Perform initial lookup if original is not managed 2021-01-12 14:45:36 +09:00
Dean Herbert
05ca016deb Make Live implement IHasGuidPrimaryKey 2021-01-12 14:45:36 +09:00
Dean Herbert
20584c9e16 Add full xmldoc for Live class 2021-01-11 19:28:19 +09:00
Dean Herbert
9f64f6059f Rename RealmWrapper to Live 2021-01-11 16:31:36 +09:00
Dean Herbert
5bb4d35982 Make RealmWrapper nullable enabled 2021-01-11 16:31:36 +09:00
Dean Herbert
cdb3d20fc6 Remove unnecessary warning suppression 2021-01-11 16:31:36 +09:00
Dean Herbert
6c90f9ceed Move RealmWrapper to own file 2021-01-11 16:31:36 +09:00
Dean Herbert
86daf65630 Fix primary key not being populated for KeyBinding 2021-01-11 16:31:35 +09:00
Dean Herbert
a77519c6bd Store KeyBinding action to its own field in realm
Also improve the Query method for action types by using generic field
2021-01-11 15:52:49 +09:00
Dean Herbert
382a40b243 Tidy up some missed inspections in RealmContextFactory 2021-01-11 15:52:49 +09:00
Dean Herbert
845d5cdea2 Switch guid to store as string until fody issues are resolved
See
https://github.com/realm/realm-dotnet/issues/740#issuecomment-755898968
2021-01-11 15:52:49 +09:00
Dean Herbert
ae76eca564 Add basic realm migration support 2021-01-11 15:52:49 +09:00
Dean Herbert
5d7ab4a7f1 Rename global statistics to be specific to realm 2021-01-11 15:52:49 +09:00
Dean Herbert
9cfede2e7e Setup context, write usage, wrapper classes 2021-01-11 15:52:49 +09:00
Lucas A
324f80d994 Fix merge conflicts. 2021-01-02 19:14:10 +01:00
Bartłomiej Dach
a376a23ed7
Merge branch 'master' into fix-leaderboard-user-handling 2020-12-28 13:43:53 +01:00
Dean Herbert
545dcac4ec Add null hinting on UserLookupCache query method 2020-12-28 20:13:24 +09:00
Dean Herbert
5ca9a6a980 Add xmldoc on UserLookupCache's lookup method 2020-12-28 20:05:48 +09:00
Dean Herbert
4d61c143db Fix lookup cache throwing a null reference if no matches were successful 2020-12-28 15:03:44 +09:00
Lucas A
926281831b Fix missing XMLDoc bit. 2020-12-19 10:36:27 +01:00
Lucas A
5d7294451f Refactor Import() overload to take a list of import tasks instead. 2020-12-16 14:28:16 +01:00
Dean Herbert
58d7e41978 Enable nullable on ImportTask 2020-12-08 12:52:34 +09:00
Dean Herbert
77279a7e56
Update stale xmldoc on import method
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2020-12-08 12:48:59 +09:00
Dean Herbert
eb38bc4b4c Add the ability to import into ArchiveModelManagers from a stream 2020-12-07 18:09:18 +09:00
Dean Herbert
009d666241 Use dictionary to avoid linq overhead 2020-11-17 10:57:11 +09:00
smoogipoo
85b0f71467 Handle duplicate user IDs within the same batch 2020-11-16 21:17:43 +09:00
smoogipoo
87bf168718 Use queue instead of list 2020-11-16 20:52:51 +09:00
smoogipoo
1b1f4c9c09 Refactor user request to fix threadsafety issues 2020-11-16 20:35:22 +09:00
Dean Herbert
4d6f0a8ea7 Fix API request error handling 2020-11-09 19:42:00 +09:00
Dean Herbert
dc69eefa51 Use HashSet instead of ConcurentBag 2020-11-09 11:54:28 +09:00
Dean Herbert
90ce1bd5f0 Add missing async suffix 2020-11-09 10:40:16 +09:00
Dean Herbert
4bbd3fe886 Handle null result 2020-11-06 18:37:27 +09:00
Dean Herbert
c97c6bbf52 Add and consume user cache class 2020-11-06 17:00:29 +09:00
Dean Herbert
d3a303e251 Use CheckExists function 2020-11-06 16:57:09 +09:00
Dean Herbert
b69ada64e8 Update BeatmapDifficultyCache to use base implementation logic 2020-11-06 14:31:21 +09:00
Dean Herbert
a2606d31c7 Move lookup/storage/compute logic to base class (and consume in ScorePerformanceCache) 2020-11-06 13:51:41 +09:00
Dean Herbert
0103b12575 Add basic base class to begin to standardise function across caching components 2020-11-06 13:26:39 +09:00
Bartłomiej Dach
2b0bea535e Resolve CA1805 inspections
"Member is explicitly initialized to its default value"
2020-11-01 18:47:40 +01:00
Berkan Diler
cc11283143 Use string.Starts-/EndsWith char overloads 2020-10-16 11:27:02 +02:00
Dean Herbert
88ffcb9234 Update EndsWith usages 2020-10-16 12:58:34 +09:00
Dean Herbert
50eca202f4 User IEnumerable for HandledExtensions 2020-10-02 16:17:10 +09:00
Dean Herbert
8b255f4579 Fix test failures
The issue was the ArchiveModelManager change; the test local change is
just there because it makes more sense to run for every test in that
scene.
2020-09-25 18:40:22 +09:00
Dean Herbert
50ba320a51 Expand available file operations in ArchiveModelManager 2020-09-25 13:16:30 +09:00
Dean Herbert
1884e0167b Eagerly populate skin metadata to allow usage in hashing computation 2020-09-14 23:31:03 +09:00
Dean Herbert
15b533f2a4 Hash skins based on name, not skin.ini contents
It is feasible that a user may be changing the contents of skin.ini
without changing the skin name / author. Such changes should not create
a new skin if already imported.
2020-09-11 16:20:54 +09:00
Dean Herbert
e80ef341d2 Allow UpdateFile to be called when a previous file doesn't exist 2020-09-03 13:20:23 +09:00
smoogipoo
443977aa8d Remove PreUpdate, update hash in Save() 2020-06-08 14:40:17 +09:00
Dean Herbert
b41384dde8
Merge branch 'master' into multiplayer-beatmap-checksum 2020-06-07 18:05:33 +09:00
Dean Herbert
5ed3cd205f Simplify reuse check using FileInfo IDs 2020-06-03 23:35:56 +09:00
Dean Herbert
012933545e Add test coverage 2020-06-03 18:33:41 +09:00
Dean Herbert
c155ab8339 Check filenames and timestamps before reusing an already imported model 2020-06-03 18:03:10 +09:00
smoogipoo
dfb9687fb5 Extract update into PreUpdate(), add test 2020-06-02 17:22:09 +09:00
Dean Herbert
f989f1aa00 Change event flow to avoid firing store delete events on update 2020-05-27 16:08:47 +09:00
Dean Herbert
904d17224f Fix english 2020-05-24 23:09:49 +09:00
Dean Herbert
234fa28445 Ensure export filename is valid 2020-05-24 22:34:31 +09:00
Dean Herbert
c071fe6140 Add the ability to export skins 2020-05-24 13:44:11 +09:00
Dean Herbert
052ad79fc6 Convert dangerous events to IBindables 2020-05-19 16:44:22 +09:00
Dean Herbert
6c350db097 Add connection flushing support 2020-05-11 21:39:44 +09:00
Dean Herbert
deb87517d0 Add local beatmap lookup cache 2020-05-02 14:35:12 +09:00
Dean Herbert
ad7cda8735 Fix download failures causing a non-safe drawable change 2020-03-10 20:11:06 +09:00
Dean Herbert
120dab18cf Fix DownloadTrackingComposite incorrectly receiving cancelled state 2020-02-15 16:20:44 +09:00
smoogipoo
0e844b3039 Cleanup / re-protect file store 2020-01-14 19:24:53 +09:00
smoogipoo
1b3bff6fa5 Fix model file infos not being removed 2020-01-14 19:24:53 +09:00
smoogipoo
b91bcaccba Remove outdated comment 2020-01-14 19:24:53 +09:00
smoogipoo
5f5878e37e Dereference existing file 2020-01-14 19:24:53 +09:00
smoogipoo
b592b6d80d Improve robustness by always creating a new file 2020-01-14 19:24:53 +09:00
smoogipoo
609102bea3 Initial file updating implementation 2020-01-14 19:24:53 +09:00
smoogipoo
681a43a318 Refactor to support beatmap updates 2020-01-14 19:24:53 +09:00
Dean Herbert
b3a7b02e3b Merge remote-tracking branch 'upstream/master' into fix-cancelling-request-not-correct 2020-01-07 11:43:01 +09:00
Dean Herbert
74d875a2e0 Give empty archives a hash based on archive name to avoid duplicate imports 2019-12-26 18:44:50 +09:00
Salman Ahmed
89fa1be2c8 Fix download manager potentially not handling cancel requests 2019-12-25 22:55:14 +03:00
Dean Herbert
886db8eb22
Merge branch 'master' into fix-local-score-availability 2019-12-18 01:15:20 +09:00
smoogipoo
946a202ee5 Fix online replays not being available locally 2019-12-17 15:47:08 +09:00
Huo Yaoyuan
40b43b85f1 CA1715: use prefix for generic parameters. 2019-12-17 13:00:25 +08:00
Dean Herbert
76a7e9cde8 Catch file exception in test reset 2019-12-12 14:04:57 +09:00
Huo Yaoyuan
b86a3dbfab PathStandardise -> ToStandardisedPath 2019-12-11 16:06:56 +08:00
Huo Yaoyuan
6b3c7c8421 Remove usages of FileSafety class. 2019-12-11 16:05:35 +08:00
Dean Herbert
c49aeb08c4 Add API methods to perform requests out-of-queue 2019-11-29 20:03:14 +09:00
Huo Yaoyuan
f05b83d7d4 Use typeparamref. 2019-11-17 20:48:23 +08:00
Huo Yaoyuan
e9b8cbb516 Apply other styles. 2019-11-11 20:27:04 +08:00
Huo Yaoyuan
ccc8aa6fa4 Apply brace style. 2019-11-11 20:13:13 +08:00
Dean Herbert
0cd912fcd3 Cover all non-APIAccess APIRequest calls with exception handling 2019-10-31 15:04:13 +09:00
Dean Herbert
cf3ed42bfc Fix download tracking components getting stuck on import failures 2019-10-28 17:41:42 +09:00
Dean Herbert
66b0004448 Remove unused logger provider class 2019-10-28 12:02:58 +09:00
smoogipoo
f8eb07b211 Only lock database for the duration of a model restoration 2019-10-03 11:24:17 +09:00
smoogipoo
dfaa9531f8 Only lock the database for the duration of a deletion 2019-10-02 18:48:50 +09:00
Dean Herbert
cdf29b0952
Specify model name on initialize and fail import notification m… (#6192)
Specify model name on initialize and fail import notification messages
2019-09-22 15:54:04 +09:00
iiSaLMaN
9be8bdef52 Remove pluralize and use title letter casing 2019-09-21 21:00:24 +03:00
iiSaLMaN
6bb0f3eb41 Move humanizing to the model name instead 2019-09-21 20:04:12 +03:00
iiSaLMaN
3be03a26c9 Pluralize instead of adding 's' 2019-09-20 16:18:55 +03:00
iiSaLMaN
8300e86f20 Specify model name on import notification messages 2019-09-20 15:46:43 +03:00
smoogipoo
dfc0928ebe Fix scores importing with deleted beatmap sets 2019-09-20 19:39:21 +09:00
Dean Herbert
ddff9882cf Fix importing archives which are nested in a single folder within a zip 2019-09-19 19:11:04 +09:00
smoogipoo
3ebfa0505c Don't share single scheduler across all model managers 2019-08-08 18:26:07 +09:00
Dean Herbert
cb17007fa7 Fix zero-length hash models incorrectly creating a unique hash 2019-07-29 16:57:19 +09:00
Dean Herbert
71e40b4684 Force SQLite to multithreading mode 2019-07-06 12:32:16 +09:00
Dean Herbert
598b0d668b
Merge branch 'master' into import-stable-scores 2019-07-05 15:54:33 +09:00
Dean Herbert
df7d31350c Stop import failures from being added to the imported model list 2019-07-05 14:47:55 +09:00
Dean Herbert
80d8ce8392 Fix GetStableImportPaths xmldoc 2019-07-05 14:21:56 +09:00
Dean Herbert
ba8df3ba92 Clean up stable lookup and mutate logic 2019-07-05 13:59:31 +09:00
Dean Herbert
8346c50ce1 Rename delete method and improve xmldoc 2019-07-05 13:55:25 +09:00
Dean Herbert
7575047db8
Merge branch 'master' into import-stable-scores 2019-07-04 01:00:42 +09:00
Dean Herbert
8e54990f62 Add database statistics to GlobalStatistics 2019-07-02 13:43:43 +09:00
HoLLy
12350d18b5 Don't remove imported archives by default 2019-06-27 14:41:11 +02:00
HoLLy
55216dffb7 Merge remote-tracking branch 'origin/master' into import-stable-scores 2019-06-27 14:07:17 +02:00
naoey
61260cf599
Hand off comparison logic for database query to implementors
Equals overrides are not used in EF queries without running the comaprison locally instead of on the database, so to preserve that the comparison logic is instead implemented on a per manager basis.
2019-06-27 15:32:27 +05:30
Dean Herbert
72bb6f8c12
Fix download buttons not correctly finding existing downloads 2019-06-27 15:24:08 +05:30
Dean Herbert
da65658bc3 Fix comments 2019-06-26 20:07:01 +09:00
Dean Herbert
9e1cb90dd8 Remove existing argument for ItemAdded event
For all usages, it looks like this was unnecessary.
2019-06-26 11:40:41 +09:00
naoey
c476e46a8e
Remove unnecessary private methods and inline used-once code 2019-06-25 21:16:30 +05:30
naoey
6f5fbd7ea1
Remove unnecessary try-catch block 2019-06-25 18:28:59 +05:30
HoLLy
802da225d4 Move responsibility for selecting paths to model managers 2019-06-21 17:32:47 +02:00
HoLLy
f1f03dd541 Remove async from Import method 2019-06-21 17:01:11 +02:00
HoLLy
99f1a94797 Fix notification progress bar 2019-06-19 20:50:50 +02:00
HoLLy
0cb66d522a Check if path can be imported before trying 2019-06-19 20:36:00 +02:00
HoLLy
ef2e93d5c7 Improve handling of null models when importing 2019-06-19 19:29:47 +02:00
HoLLy
15c75b4442 Add basic score import from stable 2019-06-19 18:33:51 +02:00
naoey
4b46601eae
Remove redundant variable, handle all request failures 2019-06-19 19:43:09 +05:30
Dean Herbert
1bcff8a3e2 Make generic covariant 2019-06-19 01:57:38 +09:00
Dean Herbert
341dc74834 Simplify download method 2019-06-19 01:41:19 +09:00
Dean Herbert
f2e0ced052 Move private event handling logic to bottom of class 2019-06-19 01:32:37 +09:00
naoey
4a16ac53ba
Remove extra newline 2019-06-15 12:28:23 +05:30
naoey
3c2a2b2390
Move doc to interface 2019-06-13 21:28:32 +05:30
naoey
7ba676ad31
Rename Info to Model 2019-06-12 21:56:36 +05:30
naoey
9cd5519da3
Remove unused delegate, use model name in notifications, add more xmldoc
- Applies a `class` constraint to the generic type in `IModelManager`
- Add xmldoc
2019-06-12 19:26:06 +05:30
naoey
c5f1da0f71
Merge remote-tracking branch 'upstream/master' into generic-download-model-manager 2019-06-12 18:20:35 +05:30
naoey
951a5abccc
Merge remote-tracking branch 'upstream/master' into generic-download-model-manager 2019-06-12 17:41:16 +05:30
smoogipoo
a17d480f51 Use "beatmap" as the model name 2019-06-12 20:41:02 +09:00
Dean Herbert
412c9646ec
Merge branch 'master' into improve-deletion-notification 2019-06-12 17:47:00 +09:00
smoogipoo
d4deac48ee Improve model deletion notification text 2019-06-12 17:27:15 +09:00
smoogipoo
2a67944889 Remove interlocked within a lock 2019-06-12 17:10:55 +09:00
smoogipoo
fd7dc9504e Remove async when not required 2019-06-12 17:08:50 +09:00
Dean Herbert
c591a6f1fa Rename request type to be less verbose 2019-06-12 13:30:23 +09:00
Dean Herbert
eaeeffaa86 Rename to DownloadableArchiveModelManager 2019-06-12 13:28:44 +09:00
naoey
c69d3e2d38
Fix doc move derp 2019-06-12 00:02:53 +05:30
naoey
c320b6110c
Rename interface
- Fix wrong inheritance in ArchiveModelManager
- Add license headers
2019-06-11 23:53:37 +05:30
naoey
4a6074865e
Create interfaces for DownloadTrackingComposite to consume 2019-06-11 22:42:57 +05:30
naoey
d903ad2186
Fix order 2019-06-11 21:30:25 +05:30
naoey
06a558c4b7
Remove unecessary third generic and change usages to match 2019-06-11 21:11:30 +05:30
Dean Herbert
27054a744e Fill in thread pool names 2019-06-12 00:35:13 +09:00
naoey
f4dab4da85
Add method to check if model exists locally already 2019-06-11 20:53:44 +05:30
naoey
709ca03a08
Remove unused usings 2019-06-11 20:21:06 +05:30
naoey
802f48712d
Add ability to perform a download request with options 2019-06-11 20:14:36 +05:30
naoey
8ff26a8fbc
Add license headers and xmldoc 2019-06-11 19:49:10 +05:30
naoey
341d137f5c
Make BeatmapManager inherit from new base class 2019-06-11 19:36:08 +05:30
naoey
b4de51b612
Create a generic base archive download manager class 2019-06-11 18:29:33 +05:30
Dean Herbert
6ca2fcebfc Centalise and prefix all ArchiveModelManager database logging 2019-06-10 19:34:32 +09:00
Dean Herbert
29945f27c5 Fix imported count incrementing on failures 2019-06-10 19:33:55 +09:00
Dean Herbert
6cda2cdb82 Fix exception output to use humanised model name 2019-06-10 18:41:56 +09:00
Dean Herbert
f7a699e4a2 Better documentation for import scheduler singleton 2019-06-10 18:38:03 +09:00
Dean Herbert
c8bd92659b Clean up exception and null handling in Import process 2019-06-10 17:12:37 +09:00
Dean Herbert
559413f766 Avoid using ContinueWith in already async context 2019-06-10 17:12:25 +09:00
Dean Herbert
02b376d962 Fix rollback logic not necessrily cleaning up file store 2019-06-10 16:14:42 +09:00
Dean Herbert
fae32b3901 Return shorter class name in error messages 2019-06-10 16:14:11 +09:00
Dean Herbert
9bdc8b47bb Remove unnecessary async-await pair 2019-06-10 16:13:51 +09:00
Dean Herbert
f31b19e0d7 Don't unwrap exception manually 2019-06-10 16:02:49 +09:00
Dean Herbert
e19f4935c3 Fix incorrect undo logic on exception 2019-06-10 14:13:36 +09:00
Dean Herbert
b79fdfc12f Fix one more instance of improperly handled cancellation 2019-06-10 13:50:22 +09:00
Dean Herbert
2d1a54e634 Properly implement cancellation 2019-06-10 13:42:38 +09:00
Dean Herbert
b4d2d0bd0b Simplify and combine concurrency of ArchiveModelManager 2019-06-10 13:42:33 +09:00
smoogipoo
f090e292c9 Move ArchiveModelManager import process to async flow 2019-06-10 13:42:22 +09:00
Dean Herbert
6ebd13c733 Allow Delete and Undelete operations to run silently when needed 2019-05-09 15:15:02 +09:00
smoogipoo
d7c09e7dbd Merge remote-tracking branch 'origin/master' into fix-new-inspections
# Conflicts:
#	osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs
#	osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
#	osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs
#	osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs
#	osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs
#	osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapScoresContainer.cs
#	osu.Game/Graphics/OsuFont.cs
#	osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs
#	osu.Game/Overlays/Profile/Header/BadgeContainer.cs
#	osu.Game/Overlays/Profile/ProfileHeader.cs
#	osu.Game/Screens/Select/PlaySongSelect.cs
#	osu.Game/Skinning/LegacySkinDecoder.cs
2019-05-07 13:20:17 +09:00
smoogipoo
0bd35ab7bb Turn on warnings, resolve issues 2019-04-25 17:36:17 +09:00
Dean Herbert
612db31c38 Apply newline additions 2019-04-01 12:16:32 +09:00
Dean Herbert
3a8c32d41b Add the ability for ArchiveModelManager to re-import even when existing entry is present 2019-03-11 17:04:18 +09:00
Dan Balasescu
fd147dae21
Merge branch 'master' into fix-disabled-set-crash 2019-03-05 17:25:13 +09:00
Dean Herbert
0300f0d665 Ensure deletions are correct without relying on FK cascade rule 2019-03-01 10:47:45 +09:00
Dean Herbert
d4041d5d42 Automate includes of files in ArchiveModelManager use cases 2019-03-01 10:25:21 +09:00
Dean Herbert
5b53cf0961
Merge branch 'master' into hide-desktop-only-elements 2019-02-28 18:50:16 +09:00
Dean Herbert
26d53d06a9 Fix remaining issues 2019-02-28 13:31:40 +09:00
Shane Woolcock
ce17e37c74 Conditionally add some UI elements only on desktop
Prevents crashes from trying to access features that are not applicable to mobile.
2019-02-28 13:10:53 +09:00
Dean Herbert
f84a84edaa Fix oops 2019-02-25 18:59:28 +09:00
Dean Herbert
314f35b0c5 Further simplify import messaging 2019-02-25 18:42:08 +09:00
Dean Herbert
80737b9ef8 Remove "silent" parameter; consolidate import logic 2019-02-25 18:24:06 +09:00
Aergwyn
c2297b0c3b
Fix incorrect param doc
Co-Authored-By: peppy <pe@ppy.sh>
2019-01-29 23:04:48 +09:00
Dean Herbert
baea9691cc Fix baetmap downloads using too much memory 2019-01-29 18:34:10 +09:00
Dean Herbert
8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
Roman Kapustin
4a1af67893 Do not delete file on import failure 2018-12-18 22:49:53 +03:00
smoogipoo
4144f4bd2f Fix duplicates not being ignored if hash is null 2018-11-30 18:40:06 +09:00
smoogipoo
a8ad7d4670 Add silent import parameter 2018-11-30 18:27:13 +09:00
Dean Herbert
aa7a665317 Merge remote-tracking branch 'upstream/master' into scoredatabase 2018-11-30 17:20:23 +09:00
Dean Herbert
e82ad3539b Move JsonIgnore specification to interface 2018-11-30 16:39:25 +09:00
Dean Herbert
705ef5e3ac Fix hash function 2018-11-30 15:10:56 +09:00
smoogipoo
a88b69ec43 Notify of existing imports 2018-11-28 20:19:35 +09:00
Dean Herbert
ab2b2493a1 Move hashing functionality to ArchiveModelManager 2018-11-28 19:21:36 +09:00
Dean Herbert
0384f3549f Add hash and missing indices to SkinInfo 2018-11-28 19:15:56 +09:00
Dean Herbert
ce660b6d67 Add skin de-duplication 2018-11-28 19:01:22 +09:00
smoogipoo
542a75d076 Add index on online score id 2018-11-28 18:56:20 +09:00
smoogipoo
219929eb47 Score -> ScoreInfo 2018-11-28 18:33:01 +09:00
smoogipoo
4ba7690e04 Initial scoremanager/scorestore structure 2018-11-28 16:50:16 +09:00
smoogipoo
a783fdb501 Add LegacyFileArchiveReader
Treats files as "archives" for import.
2018-11-28 16:13:16 +09:00
smoogipoo
0982508d26 Rename to LegacyDirectoryArchiveReader 2018-11-28 15:13:27 +09:00
smoogipoo
dc31736db7 Add explicit foreign key property to INamedFileInfo 2018-11-28 13:45:56 +09:00
smoogipoo
14ff4bc26a Move primary key attribute to IHasPrimaryKey 2018-11-28 13:19:23 +09:00
smoogipoo
c5d2dc2f6a Remove unnecessary newline 2018-11-28 13:05:17 +09:00
HoLLy
db443babb6 Fix database entries using platform-specific path separator 2018-10-07 19:15:42 +02:00
Dan Balasescu
e71e871d1f
Remove unnecessary comment 2018-09-26 18:41:55 +09:00
Paul Teng
f01dfc2860
Merge branch 'master' into patch-1 2018-09-20 23:45:44 -04:00
Paul Teng
eaf7697b85 Add boolean return value 2018-09-20 23:21:27 -04:00
Dean Herbert
293a5dd099 Use string interpolation 2018-09-21 11:50:36 +09:00
Paul Teng
52877eca83
Update ArchiveModelManager.cs 2018-09-20 20:01:04 -04:00
Paul Teng
8bfd981a50 Handle directory checking before entering task 2018-09-17 21:05:28 -04:00
Paul Teng
d469748612 Reformat code 2018-09-15 09:53:59 -04:00
Paul Teng
42b2c32222 Catch directory not found exception 2018-09-15 09:47:50 -04:00
Dean Herbert
55372496d1 Fix thread-safety of queued events list in ArchiveModelManager 2018-09-09 22:37:15 +09:00
Dean Herbert
bb67f1a361 Merge remote-tracking branch 'upstream/master' into add-skin-import-delete 2018-09-07 18:18:03 +09:00
Dean Herbert
168dbe9329 Fix error notification 2018-09-07 18:14:23 +09:00
Dean Herbert
2c0ba401d5 Add ability to click on imported complete notification to present last import 2018-09-07 16:30:11 +09:00
Dean Herbert
e67f63eab6 Improve import progress messaging 2018-09-03 10:10:04 +09:00
Dean Herbert
144e80dff6 Add "import all skins from stable" option (and mass delete) 2018-09-03 10:10:04 +09:00
Dean Herbert
5c7ff31675 Add note about null return 2018-08-25 14:51:42 +09:00
smoogipoo
99574ecad8 Softly handle errors when no beatmap file exists in archive 2018-08-24 17:57:39 +09:00
smoogipoo
50b8daf939 Fix threads being cross-disposed from DatabaseContextFactory 2018-08-22 14:07:52 +09:00
smoogipoo
83bda313d1 Output the currently importing model 2018-08-17 13:50:27 +09:00
smoogipoo
767c284793 Fix import not working 2018-08-15 15:49:55 +09:00
Dean Herbert
b38da34da9 Fix resetting database failing due to incorrect disposal logic 2018-07-24 12:13:48 +02:00
Dean Herbert
fc6deb6ab5 Merge remote-tracking branch 'upstream/master' into peppy-fix-model-import 2018-07-20 16:42:46 +09:00
Dean Herbert
0c24244340 Remove SingletonContextFactory
It is dangerous to use this as it doesn't correctly handle contexts and can cause issues that will never actually arise in normal execution.

# Conflicts:
#	osu.Game/Database/SingletonContextFactory.cs
2018-07-18 16:50:56 +09:00
Dean Herbert
e3fb781a5a Fix ArchiveModelManager's model import method not running import logic 2018-07-18 12:59:22 +09:00
Dean Herbert
4a19f22b3d Remove custom migration exception
This was hiding the true error message from ever hitting logs.
Made to help disagnose #2711.
2018-06-15 13:38:42 +09:00
Dan Balasescu
b59c45ca57
Merge branch 'master' into fix-database-migration-failure 2018-06-06 22:44:35 +09:00
Dean Herbert
a60c888ae5 Add comment about reasoning for local context variable 2018-06-06 22:05:25 +09:00
Dean Herbert
3b03a25ea5 Fix beatmaps with subfolders importing incorrectly on windows
Closes #2718.
2018-06-05 11:36:44 +09:00
Dean Herbert
3a823d6c25 Fix multiple issues causing database reset to fail 2018-06-04 02:12:16 +09:00
smoogipoo
9da7bfd615 Merge remote-tracking branch 'origin/master' into fix-beatmap-import-conflicts
# Conflicts:
#	osu.Game/Database/ArchiveModelManager.cs
2018-05-31 14:02:52 +09:00
Dean Herbert
eb89317494 Remove performance optimisation tracking disables to keep things simple for now 2018-05-30 13:43:43 +09:00
Dean Herbert
4a7de043e0 Recycle all contexts on beginning a write operation for the time being 2018-05-30 13:43:25 +09:00
Dean Herbert
e23e2bd348 Fix recycling never being performed due to incorrect ordering 2018-05-30 13:37:52 +09:00
Dean Herbert
31ab6f2408 Fix event flushing sticking on early return 2018-05-29 19:43:52 +09:00
Dean Herbert
4a18951cce Report full error to log file 2018-05-29 18:37:45 +09:00
Dean Herbert
47d88a48a2 Add logging on import processes 2018-05-29 16:26:42 +09:00
Dean Herbert
de8c4e6d56 Remove unique constraints on hash columns
We are going to allow multiple instances of the same beatmap info hash as they could be in different beatmap sets.
2018-05-29 16:26:32 +09:00
Dean Herbert
c1f416b1cc Add back missing rethrow 2018-05-29 16:23:38 +09:00
Dean Herbert
3d3026a80c Report any error during import to the write context to allow for rollback 2018-05-29 16:23:38 +09:00
Dean Herbert
72da640059 Change order of event firing in Update calls
A remove event should not be fired before the update is successful.
2018-05-29 16:23:38 +09:00
Dean Herbert
80806be047 Don't start transactions for migration
It looks like transactions are used internally during migration.
2018-05-29 16:23:38 +09:00
Dean Herbert
a3287b8cf2 Correctly rollback failed imports 2018-05-29 16:23:38 +09:00
Dean Herbert
bcb04f6168 Improve transaction handling flexibility 2018-05-29 16:23:27 +09:00
Dean Herbert
d4e7f08c20 Bring entity framework up-to-date and re-enable transactions 2018-05-29 16:23:27 +09:00
Dean Herbert
2a87b851fa Add proper transaction rollback logic on exception 2018-05-29 16:23:27 +09:00
Dean Herbert
32a74f95a5 Normalize all the line endings 2018-04-13 18:26:38 +09:00
smoogipoo
b97c4e8b44 Fix all possible cases of crossthread import data races 2018-04-09 12:45:44 +09:00
smoogipoo
5159127bce Fix SQLite failing to initialize on test projects 2018-03-26 18:07:09 +09:00
Dean Herbert
0e669c9a3f Fix many warnings 2018-03-24 18:23:22 +09:00
smoogipoo
ffa712dccb Fix post-merge issues 2018-03-24 15:19:45 +09:00
smoogipoo
c29f7a4333 Merge remote-tracking branch 'origin/master' into netstandard 2018-03-24 14:49:46 +09:00
Dean Herbert
b8022070e8 Merge remote-tracking branch 'upstream/master' into beatmap-as-a-skin 2018-03-22 16:24:56 +09:00
Dean Herbert
9a20839b74
Merge branch 'master' into better-import-notice 2018-03-22 14:57:04 +09:00
smoogipoo
dc9fb84e25 Update progress with the current item, not the next item
In the case where there is no next item, the progress will not get updated, so we'll essentially skip one element from filling the progress bar further. In the future we may/will want to not hide the notification upon completion, so this will look better in such scenarios.
2018-03-22 14:46:25 +09:00
Dean Herbert
5104ba8118
Merge branch 'master' into beatmap-as-a-skin 2018-03-22 13:45:30 +09:00
Dean Herbert
101caf3064 Apply same logic fixes to delete/restore all notifications 2018-03-22 11:28:40 +09:00
Dean Herbert
625e561fc8 Fix whitespace 2018-03-20 18:01:09 +09:00
Dean Herbert
dbcf755618 Make Beatmaps parsable as skins 2018-03-20 16:05:29 +09:00
Dean Herbert
f565cc861d Hard bail on attempting to import an invalid archive format 2018-03-19 20:41:12 +09:00
Dean Herbert
994c7bfabd Further improvements to messaging 2018-03-19 20:40:14 +09:00
Dean Herbert
18368d2446 Make import notifications fail when any imports fail 2018-03-19 20:18:23 +09:00
Dean Herbert
e9c5834387 Add query method for now 2018-02-23 13:26:01 +09:00
Dean Herbert
402d71a8d9 Add user skin setting storage 2018-02-22 16:29:05 +09:00
Dean Herbert
4c14b32783 Add basic skin database model layout and importing 2018-02-22 15:46:11 +09:00
Dean Herbert
57e61b0b0e Update xmldoc 2018-02-19 14:50:42 +09:00
Dean Herbert
8b89735e9e Improve xmldoc for DatabaseContextFactory.Get 2018-02-19 14:17:41 +09:00
Dean Herbert
fa05822d7d Add missing licence headers 2018-02-15 16:33:33 +09:00
Dean Herbert
b9ef32b09b Further xmldoc and restoring of Cleanup method 2018-02-15 16:31:42 +09:00
Dean Herbert
1b13be1372 Cleanups and xmldoc additions 2018-02-15 16:24:14 +09:00
Dean Herbert
89cf794f98 Add a lower level ConsumableItems implementation 2018-02-15 16:15:40 +09:00
Dean Herbert
671475f3b4 Ensure undeleted items are populated with includes before firing events 2018-02-15 16:15:40 +09:00
Dean Herbert
e51450a064 Fix query construction 2018-02-15 15:24:28 +09:00
Dean Herbert
fe5df663be Add more xmldoc 2018-02-15 15:14:46 +09:00
Dean Herbert
a0a65abcac Crentalise all import logic 2018-02-15 14:22:39 +09:00
Dean Herbert
d3dd31dadb Make deletion and purging logic even more global 2018-02-15 14:22:39 +09:00
Dean Herbert
d340509b1d Move ArchiveReaders to a more global namespace
Also moves delete and action logic to a shared implementation
2018-02-15 14:22:39 +09:00
Dean Herbert
6ff63c2f0c Move deletion to ArchiveModelImportManager 2018-02-15 14:22:39 +09:00
Dean Herbert
e0d28564d0 Move import logic to shared implementation 2018-02-15 14:22:39 +09:00
Dean Herbert
50cdb03cd9 Don't dispose read contexts 2018-02-13 15:08:45 +09:00
Dean Herbert
ab34123ba8 Remove unnecessary class variable 2018-02-13 15:05:19 +09:00
Dean Herbert
a738664167 Add interface for database context factory 2018-02-12 23:10:05 +09:00
Dean Herbert
64cda9fd0f Remove incorrect assert assumption 2018-02-12 22:16:09 +09:00
Dean Herbert
8b37fde15b Only write when writes occur
Also add finaliser logic for safety. Also better threading. Also more cleanup.
2018-02-12 19:57:21 +09:00
Dean Herbert
edc3638175 DatabaseWriteUsage 2018-02-12 17:55:11 +09:00
Dean Herbert
e54de0c267 Remove sqlite-net migration
Anyone that may have benefited from this already has.
2018-02-12 15:25:09 +09:00
smoogipoo
b500b76407 Merge branch 'master' into update-branch 2018-02-08 23:35:48 +09:00
Dean Herbert
03154dbc63 Fix incorrect initial migration
Also adds variant to settings
2018-01-25 23:41:03 +09:00
Dean Herbert
5a00ae36d1 Add database-based configuration for rulesets 2018-01-24 17:45:28 +09:00
Dean Herbert
37d393bca0 Update licence headers 2018-01-05 20:21:19 +09:00
smoogipoo
7a793eaded Merge master into netstandard 2017-12-27 20:48:53 +09:00
Dean Herbert
d02e1ae896 Update RulesetInfo and add migration 2017-12-10 12:15:55 +09:00
smoogipoo
267bb75458 Merge remote-tracking branch 'Aergwyn/master' into netstandard 2017-11-29 23:45:29 +09:00
Dean Herbert
85827f83eb Perform a reload on objects when Refreshing them
Previously, it was possible for an object to be "refreshed" with a stale cached state from the current thread's context.

This ensures a check against the database is performed as well.

Resolves #1562.
2017-11-23 17:04:39 +09:00
smoogipoo
b3bf6e7bee Merge master into netstandard 2017-11-21 16:39:21 +09:00
smoogipoo
a66edea6dc Move sqlite batteries to osu.Desktop
Fixes e_sqlite.dll not being copied to output on Windows
2017-11-21 15:33:05 +09:00
Dean Herbert
7d2bbc50a3 Add unique constraint on OnlineBeatmapID 2017-11-19 01:45:17 +09:00
smoogipoo
04b271cce9 Migrate osu.Game project to VS2017 project structure 2017-10-30 22:24:11 +09:00
Dean Herbert
ead3ca1f27 Merge branch 'master' into fix-threaded-context-issues 2017-10-25 23:42:08 +09:00
Dean Herbert
6f7ba55f80 Fill out xmldoc 2017-10-25 22:19:47 +09:00
Dean Herbert
c1d133977e FirstOrDefault -> SingleOrDefault 2017-10-25 22:17:17 +09:00
Dean Herbert
5001e9f264 Fix Hide/Restore/Delete etc. 2017-10-25 22:08:34 +09:00
Dean Herbert
8452e315f4 Allow "refreshing" instances via DatabaseBackedStore 2017-10-25 22:06:25 +09:00
Dean Herbert
487b888f4f Add missing database indices
Also add missing unique constraints where applicable.
2017-10-25 22:05:10 +09:00
Dan Balasescu
05e1a7a5f8 Merge branch 'master' into online-beatmap-id-sanity 2017-10-25 21:38:33 +09:00
TocoToucan
5107489cda Remove DatabaseBackedStore Reset functions 2017-10-25 15:12:14 +03:00
TocoToucan
63fe569afa Remove DatabaseBackedStore Prepare functions 2017-10-25 14:53:20 +03:00
Dean Herbert
66f1d2fb2e Ensure all parsed "Online" IDs are above zero or null
Some .osu file sources (or database sources) may be in a bad state. We want to get these ones right as they cannot be enforced by the database itself (via FKs or constraints).
2017-10-25 14:34:39 +09:00
Dean Herbert
22b3f5dd19 Merge remote-tracking branch 'upstream/master' into import-test-fixes 2017-10-23 22:03:37 +09:00
Dean Herbert
dc9c474033 Move all TestCases to Testing project
This allows tests to successfully retrieve rulesets, as they are referenced.
2017-10-23 19:32:02 +09:00
Dean Herbert
1a3debc91d Ensure thread safety on shared contexts
Let's call this one temporary.
2017-10-23 17:56:04 +09:00
Dean Herbert
df20845fbb Share one context per file store for performance reasons
There is now a CreateContext method for retrieving a stand-alone context for threaded use.

We may want to add safety against this context being disposed (or just return a fresh one if it is).
2017-10-23 16:35:35 +09:00
Dean Herbert
4a68dd88cb Centralise BeginTransaction and disable transaction use for now 2017-10-23 14:53:13 +09:00
Dean Herbert
61c1dd3636 Don't output database logs unless DEBUG_DATABASE is specified compile-time 2017-10-22 19:46:08 +09:00
Dean Herbert
1514d8451e Use a more elegant method of setting the connection timeout 2017-10-22 16:20:04 +09:00
Dean Herbert
29fcd210aa Centralise transaction committing 2017-10-22 16:17:40 +09:00
Dean Herbert
39b356880e Fix typo 2017-10-22 15:32:47 +09:00
Dean Herbert
6818ebdaff Change the way migrations are checked for
This method allows switching between sqlite-net and EF builds without completely breaking. Note that DB migration still only happens in a forward direction, but this will allow switching back and forth without eventually being unable to start the game.
2017-10-22 15:27:16 +09:00
Dean Herbert
47213d2498 Rely on storage.DeleteDatabase for guaranteed database deletion
Relies on https://github.com/ppy/osu-framework/pull/1100 being merged for most effectiveness.
2017-10-21 00:15:02 +09:00
Dean Herbert
d32059a7ba Ignore include-ignore warnings for now 2017-10-20 09:25:54 +09:00
Dean Herbert
ca78078436 Add more logging output 2017-10-20 08:06:07 +09:00
Dean Herbert
efaf98c5cf Allow recovery from a very broken database 2017-10-20 00:48:27 +09:00
Dean Herbert
d9fd05a5af Hidden cannot be null 2017-10-19 23:19:30 +09:00
Dean Herbert
8aea6068ba Add fallback logic for the case where previous database can't be migrated 2017-10-19 21:37:09 +09:00
Dean Herbert
1672e0d6b6 Add fallback logic in case migration fails
Nuke it all.
2017-10-19 21:11:43 +09:00
Dean Herbert
1fbbee14e4 Allow migration from sqlite-net to EF
Bonus stage
2017-10-19 20:04:59 +09:00
Dean Herbert
f7d0df1743 Fix beatmap difficulty and metadata deletion 2017-10-19 17:50:46 +09:00
Dean Herbert
b02dd196f6 Don't make one factory each context
A factory is supposed to be re-used.
2017-10-19 17:29:39 +09:00
Dean Herbert
36c00577af Reduce database log output
Also hard-disables it for uninteresting log levels, providing a further performance boost.
2017-10-19 16:35:06 +09:00
Dean Herbert
5d5ea5fb2e Fix all remaining db structure issues 2017-10-19 14:05:11 +09:00
Dean Herbert
4e8019b313 Add some more missing indices 2017-10-17 19:59:22 +09:00
Dean Herbert
e4a066dc5f Run cleanup tasks only on startup via manual calls 2017-10-17 19:58:33 +09:00
Dean Herbert
b9d0fb96ed Fix cascade deletions 2017-10-17 18:26:28 +09:00
Dean Herbert
12639c6819 Use a different database name for now to avoid conflicts when switching versions 2017-10-17 17:52:20 +09:00
Dean Herbert
3e415e3269 Fix tooling failures 2017-10-17 17:52:02 +09:00
Dean Herbert
0177fcbe5f Fix xmldoc 2017-10-17 17:08:47 +09:00
Dean Herbert
ad54ca9268 Fix TestCasePlaySongSelect 2017-10-17 16:04:54 +09:00
Dean Herbert
e487b6f82a Standardise context retrieval 2017-10-17 15:50:42 +09:00
Dean Herbert
cd41862e3b Add back transaction support for beatmap importing 2017-10-17 15:00:27 +09:00
Dean Herbert
fe44a28d48 Add back startup tasks runner 2017-10-17 12:46:38 +09:00
Dean Herbert
66894d11ea Connection -> context 2017-10-17 12:46:29 +09:00
Dean Herbert
ec51314e37 Remove duplicate command 2017-10-16 16:11:34 +09:00
Dean Herbert
7049a73490 Remove ValidTypes from databased stored; explicitly expose query methods instead 2017-10-16 14:47:33 +09:00
Dean Herbert
4981630131 Fix formatting regressions 2017-10-16 13:12:51 +09:00
Dean Herbert
8a0b184dd6 Revert "Return back DatabaseBackedStore's query and populate functions"
This reverts commit 7cf5d63cd3.
2017-10-16 12:59:59 +09:00
Dean Herbert
e3d31bdd10 Not implemented instead of incorrect 2017-10-16 12:59:59 +09:00
Dean Herbert
129cca0704 Tidy up context creation 2017-10-16 12:59:59 +09:00
Dean Herbert
a232033469 Fix some file headers and unused files 2017-10-16 00:54:09 +09:00
TocoToucan
7cf5d63cd3 Return back DatabaseBackedStore's query and populate functions 2017-10-15 00:40:41 +03:00
smoogipoo
167eefa397 Add logging 2017-10-14 15:16:08 +09:00
TocoToucan
ef417c6388 Small DB-related refactoring 2017-10-09 23:30:32 +03:00
TocoToucan
81b9e08fb6 Fix foreign key constraint failure 2017-10-09 00:30:52 +03:00
TocoToucan
6a4198d0d6 Initial EF Core commit 2017-10-04 22:52:12 +03:00
Dean Herbert
3b1166d1e6 Optimise file lookups and other database operations
FirstOrDefault when called on a TableQuery with a predicate doesn't use table indices
2017-08-01 17:37:21 +09:00
Dean Herbert
b4acdd5f90 Merge remote-tracking branch 'upstream/master' into fix-file-references 2017-08-01 11:05:38 +09:00
Dean Herbert
c060d32765 Separate out startup tasks to ensure they run after migrations 2017-08-01 10:24:00 +09:00
Dean Herbert
404497fa10 Allow a single beatmap to reference the same file multiple times
This fixes incorrect reference counts causing database desync.
2017-07-31 21:49:57 +09:00
Dean Herbert
bc8f8de049 Make QueryAndPopulate's filter non-optional (you basically *never* want this missing) 2017-07-31 18:41:54 +09:00
Dean Herbert
9ee59dd637 Add the ability to create migrations on a per-store level
Now stores store versions to the database itself.
2017-07-28 12:58:35 +09:00
Dean Herbert
3a6f3cdd8a Add the ability to create migrations on a per-store level
Now stores store versions to the database itself.
2017-07-27 20:38:40 +09:00
Dean Herbert
5f53426a9a *Database -> *Store
Welcome back BeatmapManager
2017-07-27 16:56:41 +09:00
Dean Herbert
96b08b8777 Simplify and document DatabaseStore API 2017-07-27 15:06:10 +09:00
Dean Herbert
898a601098 Introduce a reference counting file store 2017-07-26 20:22:02 +09:00
Dean Herbert
9e20a02c0a Split out BeatmapDatabase into BeatmapStore
Hide database functionality at a lower level in preparation from eventually making it private.
2017-07-26 16:31:34 +09:00
Dean Herbert
fce580d717 Reshuffle namespaces 2017-07-26 13:22:46 +09:00
Dean Herbert
d6968ca09c Remove FullyLoaded logic
Always parse storyboards for now.

Let's not optimise this until it is necessary. It was leading to weird threading problems due to the load call in Player's async load method.
2017-07-20 11:01:50 +09:00
Dean Herbert
d69470f2ae Fix TestWorkingBeatmap broken by attempting to load storyboard 2017-07-20 09:22:39 +09:00
Dean Herbert
da92fccdb0 Merge branch 'master' into non-null-beatmap 2017-07-19 18:32:42 +09:00
Dean Herbert
d7dddec328 Set zero-difficulty values local to the dummy beatmap 2017-07-19 18:32:11 +09:00
Dean Herbert
35157ca6b8 Make DefaultBeatmap private get. 2017-07-19 18:09:59 +09:00
Dean Herbert
632d2e8ba5 Dummy beatmap has dummy ruleset 2017-07-19 15:16:48 +09:00
Dean Herbert
f168ee660c Move dummy to BeatmapDatabase 2017-07-19 15:16:43 +09:00
Dean Herbert
6016310b09 Use a better default for difficulty values 2017-07-19 15:16:37 +09:00
Dean Herbert
f00140f0a4 Avoid crashes on attempting to import the same path twice in quick succession 2017-07-19 14:56:24 +09:00
Dean Herbert
5761eb30a0 Fix nullref error on re-importing a DeletePending beatmap
Callback was expecting the beatmap to be populated where it wasn't being.
2017-07-19 14:56:20 +09:00
Dan Balasescu
c13dc943f8 Merge branch 'master' into fix-track-rotation 2017-07-14 19:25:54 +10:00
Dean Herbert
2c1f3de47a Rename 2X resources to be defaults 2017-07-13 10:27:39 +09:00
Dean Herbert
1bd3519ecb Have beatmap return a zero-length TrackVirtual instead of null on load failure 2017-07-11 18:38:27 +09:00
DrabWeb
b448603d6c CI fixes. 2017-07-11 01:42:51 -03:00
DrabWeb
69b290519f Better BeatmapSetOnlineInfo comments. 2017-07-11 00:28:25 -03:00
DrabWeb
84701846ec Merge https://github.com/ppy/osu into osu-direct-search 2017-07-11 00:26:49 -03:00
John Neijzen
d9a9616125 EOF remove blank spaces 2017-06-08 14:56:03 +08:00
DrabWeb
ddc4d45ae8 Unused usings 2017-06-07 11:39:04 -03:00
DrabWeb
add08e65ff Result counts displaying 2017-06-07 11:30:52 -03:00
DrabWeb
8745948a01 Basic searching in osu!direct, move BeatmapSetOnlineInfo covers into their own class 2017-05-28 02:26:25 -03:00
DrabWeb
ab32e962ca Make BeatmapOnlineInfo and BeatmapSetOnlineInfo separate classes, -OnlineWorkingBeatmap 2017-05-28 00:37:55 -03:00
DrabWeb
a25c504965 CI fixes 2017-05-24 03:08:48 -03:00
DrabWeb
ba2627d4e2 Merge branch 'osu-direct' of https://github.com/DrabWeb/osu into osu-direct 2017-05-24 02:40:00 -03:00
DrabWeb
e59c1879a2 Remove tabs 2017-05-24 02:38:55 -03:00
DrabWeb
4490596f5f Keep one object per file 2017-05-24 02:37:27 -03:00
Dean Herbert
4ee11764b8 Merge branch 'master' into osu-direct 2017-05-24 12:16:34 +09:00
Dean Herbert
fe7ac20e29 Read menu music from osz resource 2017-05-23 16:38:43 +09:00
Dean Herbert
0b987be600 Merge branch 'master' into osu-direct 2017-05-20 16:17:59 +09:00
DrabWeb
c981a4a511 Formatting 2017-05-19 19:50:45 -03:00
DrabWeb
0a90965a5b CI formatting 2017-05-19 19:22:42 -03:00
DrabWeb
7a60aa614d Reword comment 2017-05-19 19:05:54 -03:00
DrabWeb
e1c4c36122 +BeatmapOnlineInfo, +OnlineWorkingBeatmap, minor cleanups, panel beatmap backgrounds 2017-05-19 15:43:18 -03:00
Dean Herbert
c51d640241 Add support for searching beatmap author at song select
Resolves #792
2017-05-19 13:13:27 +09:00
Dean Herbert
f730769186 Rewrite to make better 2017-05-15 12:54:56 +09:00
Dean Herbert
a9b3f74218 Fix ruleset not always getting populated in a WorkingBeatmap 2017-05-12 20:05:44 +09:00
Dean Herbert
a2f6d8a3e6 Fix broken test cases, remove some recursive lookup methods. 2017-05-11 19:38:28 +09:00
Dean Herbert
70ef503403 Merge branch 'master' into metadata 2017-05-11 12:23:00 +09:00
Huo Yaoyuan
4c26a02e99 Remove unnecessary arguments in WorkingBeatmap's constructor. 2017-05-08 16:42:53 +08:00
Huo Yaoyuan
4f8549f220 Standardise usages of exceptions. 2017-05-07 00:38:17 +08:00
Huo Yaoyuan
767cfaaac3 Access database recursively. 2017-05-06 15:37:53 +08:00
Huo Yaoyuan
146d57953d Use metadata field of WorkingBeatmap. 2017-05-06 14:57:11 +08:00
Huo Yaoyuan
4f49151984 Make metadata a member of WorkingBeatmap. 2017-05-06 14:52:28 +08:00
Dean Herbert
a993790a66 Ensure all searchable terms are non-null non-empty. 2017-05-02 17:54:07 +09:00
Dean Herbert
6074cb5979 Make playlist filtering work.
Also standardises searchable terms in beatmap metadata.
2017-05-02 10:45:55 +09:00
Dean Herbert
28375ed1fc Allow transfer of previously loaded background between WorkingBeatmaps 2017-04-28 15:03:07 +09:00
Dean Herbert
e1a2f1bc7a Add beatmap metrics lookup. 2017-04-24 19:17:11 +09:00