Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
ClientServer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
YAPEX
ClientServer
Commits
f3c0cc77
Commit
f3c0cc77
authored
5 years ago
by
Janis Daniel Dähne
Browse files
Options
Downloads
Patches
Plain Diff
- commented out migration code
parent
a6c608c0
No related branches found
Branches containing commit
No related tags found
Loading
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/ClientServer/Controllers/Core/Init.cs
+660
-660
660 additions, 660 deletions
src/ClientServer/Controllers/Core/Init.cs
with
660 additions
and
660 deletions
src/ClientServer/Controllers/Core/Init.cs
+
660
−
660
View file @
f3c0cc77
...
...
@@ -312,666 +312,666 @@ namespace ClientServer.Controllers.Core
}
[
HttpGet
(
"migrate/markdown"
)]
public
void
MigrateMarkdownFiles
()
{
var
basePath
=
Files
.
GetUploadFilePath
(
UploadDirType
.
MarkdownAssets
);
var
exDescriptions
=
_context
.
ExerciseDescriptions
.
Include
(
p
=>
p
.
Assets
)
.
Where
(
p
=>
p
.
Assets
.
Count
>
0
)
.
ToList
()
;
int
count
=
0
;
foreach
(
var
exerciseDescription
in
exDescriptions
)
{
foreach
(
var
descriptionAsset
in
exerciseDescription
.
Assets
)
{
//create the real file
try
{
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
var
fileRef
=
new
FileReferenceMarkdownAsset
()
{
OriginalName
=
descriptionAsset
.
DisplayName
,
CreatedAt
=
(
DateTime
)
_context
.
Entry
(
descriptionAsset
)
.
Property
(
YapexDbContext
.
CreatedAt
)
.
CurrentValue
,
LastUpdatedAt
=
(
DateTime
)
_context
.
Entry
(
descriptionAsset
)
.
Property
(
YapexDbContext
.
LastUpdatedAt
).
CurrentValue
,
MimeType
=
descriptionAsset
.
MimeType
,
SizeInBytes
=
descriptionAsset
.
Content
.
Length
,
Hash
=
""
,
};
var
conn
=
new
ExerciseDescriptionWithFileAsAssetReference
()
{
ExerciseDescription
=
exerciseDescription
,
FileReferenceMarkdownAsset
=
fileRef
};
_context
.
ExerciseDescriptionWithFileAsAssetReferences
.
Add
(
conn
);
_context
.
SaveChanges
();
if
(
fileRef
.
Id
<=
0
)
{
throw
new
Exception
(
"fileRef must be tracked in db context"
);
}
try
{
var
info
=
new
FileInfo
(
Path
.
Combine
(
basePath
,
fileRef
.
Id
.
ToString
()));
if
(
info
.
Exists
)
{
throw
new
Exception
(
"file already exists"
);
}
using
(
var
stream
=
new
FileStream
(
info
.
FullName
,
FileMode
.
Create
))
{
stream
.
Write
(
descriptionAsset
.
Content
,
0
,
descriptionAsset
.
Content
.
Length
);
using
(
var
md5
=
MD5
.
Create
())
{
var
result
=
md5
.
ComputeHash
(
descriptionAsset
.
Content
);
fileRef
.
Hash
=
String
.
Join
(
String
.
Empty
,
result
.
Select
(
p
=>
p
.
ToString
(
"x2"
)));
}
}
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
$"[ERROR] error creating file name:
{
descriptionAsset
.
DisplayName
}
"
);
Console
.
WriteLine
(
e
.
Message
);
throw
;
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
count
++;
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
);
throw
;
}
}
}
Response
.
WriteAsync
(
"OK -"
+
count
);
}
[
HttpGet
(
"migrate/ex/markdown"
)]
public
void
MigrateMarkdownExerciseDescriptionContent
()
{
var
allDescriptions
=
_context
.
ExerciseDescriptions
.
Include
(
p
=>
p
.
AssetReferences
)
.
ThenInclude
(
p
=>
p
.
FileReferenceMarkdownAsset
)
.
Include
(
p
=>
p
.
Assets
)
.
ToList
();
int
count
=
0
;
int
count2
=
0
;
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
foreach
(
var
exerciseDescription
in
allDescriptions
)
{
if
(
exerciseDescription
.
Content
.
Contains
(
Constants
.
MarkdownAssetFileUrlPrefix
))
{
foreach
(
var
asset
in
exerciseDescription
.
Assets
)
{
//find asset ref
var
assetRef
=
exerciseDescription
.
AssetReferences
.
FirstOrDefault
(
p
=>
p
.
FileReferenceMarkdownAsset
.
OriginalName
==
asset
.
DisplayName
&&
p
.
FileReferenceMarkdownAsset
.
SizeInBytes
==
asset
.
Content
.
Length
);
if
(
assetRef
==
null
)
{
throw
new
Exception
(
$"could not find asset ref for asset id
{
asset
.
Id
}
for ex desc
{
exerciseDescription
.
Id
}
"
);
}
exerciseDescription
.
Content
=
exerciseDescription
.
Content
.
Replace
(
asset
.
AssetUrl
,
Constants
.
MarkdownAssetFileUrlPrefix
+
assetRef
.
FileReferenceMarkdownAssetId
);
count2
++;
}
count
++;
}
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
Response
.
WriteAsync
(
$"OK -
{
count
}
- $
{
count2
}
"
);
}
[
HttpGet
(
"migrate/tests"
)]
public
void
MigrateTestFiles
()
{
var
basePath
=
Files
.
GetUploadFilePath
(
UploadDirType
.
TestAssets
);
var
testsWithAssets
=
_context
.
Tests
.
Include
(
p
=>
p
.
TestAssets
)
.
Where
(
p
=>
p
.
TestAssets
.
Count
>
0
)
.
ToList
()
;
int
count
=
0
;
foreach
(
var
testWithAsset
in
testsWithAssets
)
{
foreach
(
var
testAsset
in
testWithAsset
.
TestAssets
)
{
//create the real file
try
{
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
var
fileRef
=
new
FileReferenceTestAsset
()
{
OriginalName
=
testAsset
.
DisplayName
,
CreatedAt
=
(
DateTime
)
_context
.
Entry
(
testAsset
)
.
Property
(
YapexDbContext
.
CreatedAt
)
.
CurrentValue
,
LastUpdatedAt
=
(
DateTime
)
_context
.
Entry
(
testAsset
)
.
Property
(
YapexDbContext
.
LastUpdatedAt
).
CurrentValue
,
MimeType
=
testAsset
.
MimeType
,
SizeInBytes
=
testAsset
.
Content
.
Length
,
Hash
=
""
,
};
var
conn
=
new
TestWithFileAsAssetReference
()
{
Test
=
testWithAsset
,
FileReferenceTestAsset
=
fileRef
};
_context
.
TestWithFileAsAssetReferences
.
Add
(
conn
);
_context
.
SaveChanges
();
if
(
fileRef
.
Id
<=
0
)
{
throw
new
Exception
(
"fileRef must be tracked in db context"
);
}
try
{
var
info
=
new
FileInfo
(
Path
.
Combine
(
basePath
,
fileRef
.
Id
.
ToString
()));
if
(
info
.
Exists
)
{
throw
new
Exception
(
$"file already exists:
{
info
.
FullName
}
"
);
}
using
(
var
stream
=
new
FileStream
(
info
.
FullName
,
FileMode
.
Create
))
{
stream
.
Write
(
testAsset
.
Content
,
0
,
testAsset
.
Content
.
Length
);
using
(
var
md5
=
MD5
.
Create
())
{
var
result
=
md5
.
ComputeHash
(
testAsset
.
Content
);
fileRef
.
Hash
=
String
.
Join
(
String
.
Empty
,
result
.
Select
(
p
=>
p
.
ToString
(
"x2"
)));
}
}
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
$"[ERROR] error creating file name:
{
testAsset
.
DisplayName
}
"
);
Console
.
WriteLine
(
e
.
Message
);
throw
;
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
count
++;
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
);
throw
;
}
}
}
Response
.
WriteAsync
(
"OK -"
+
count
);
}
[
HttpGet
(
"migrate/custom/tests"
)]
public
void
MigrateCustomTestAssets
()
{
var
basePath
=
Files
.
GetUploadFilePath
(
UploadDirType
.
UserAssets
);
var
testsWithAssets
=
_context
.
CustomTest
.
Include
(
p
=>
p
.
TestAssets
)
.
Where
(
p
=>
p
.
TestAssets
.
Count
>
0
)
.
ToList
()
;
int
count
=
0
;
foreach
(
var
customTest
in
testsWithAssets
)
{
foreach
(
var
customTestAsset
in
customTest
.
TestAssets
)
{
//create the real file
try
{
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
var
fileRef
=
new
FileReferenceUserFileAsset
()
{
OriginalName
=
customTestAsset
.
DisplayName
,
CreatedAt
=
(
DateTime
)
_context
.
Entry
(
customTestAsset
)
.
Property
(
YapexDbContext
.
CreatedAt
)
.
CurrentValue
,
LastUpdatedAt
=
(
DateTime
)
_context
.
Entry
(
customTestAsset
)
.
Property
(
YapexDbContext
.
LastUpdatedAt
).
CurrentValue
,
MimeType
=
customTestAsset
.
MimeType
,
SizeInBytes
=
customTestAsset
.
Content
.
Length
,
Hash
=
""
,
};
var
conn
=
new
CustomTestWithFileAsAssetReference
()
{
CustomTest
=
customTest
,
FileReferenceUserFileAsset
=
fileRef
};
_context
.
CustomTestWithFileAsAssetReferences
.
Add
(
conn
);
_context
.
SaveChanges
();
if
(
fileRef
.
Id
<=
0
)
{
throw
new
Exception
(
"fileRef must be tracked in db context"
);
}
try
{
var
info
=
new
FileInfo
(
Path
.
Combine
(
basePath
,
fileRef
.
Id
.
ToString
()));
if
(
info
.
Exists
)
{
throw
new
Exception
(
$"file already exists:
{
info
.
FullName
}
"
);
}
using
(
var
stream
=
new
FileStream
(
info
.
FullName
,
FileMode
.
Create
))
{
stream
.
Write
(
customTestAsset
.
Content
,
0
,
customTestAsset
.
Content
.
Length
);
using
(
var
md5
=
MD5
.
Create
())
{
var
result
=
md5
.
ComputeHash
(
customTestAsset
.
Content
);
fileRef
.
Hash
=
String
.
Join
(
String
.
Empty
,
result
.
Select
(
p
=>
p
.
ToString
(
"x2"
)));
}
}
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
$"[ERROR] error creating file name:
{
customTestAsset
.
DisplayName
}
"
);
Console
.
WriteLine
(
e
.
Message
);
throw
;
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
count
++;
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
);
throw
;
}
}
}
Response
.
WriteAsync
(
"OK -"
+
count
);
}
[
HttpGet
(
"migrate/custom/project/description"
)]
public
void
MigrateCustomProjectDescriptionAssets
()
{
var
basePath
=
Files
.
GetUploadFilePath
(
UploadDirType
.
UserAssets
);
var
customProjectDescriptions
=
_context
.
CustomProjectDescriptions
.
Include
(
p
=>
p
.
Assets
)
.
Where
(
p
=>
p
.
Assets
.
Count
>
0
)
.
ToList
()
;
int
count
=
0
;
foreach
(
var
customProjectDescription
in
customProjectDescriptions
)
{
foreach
(
var
customAsset
in
customProjectDescription
.
Assets
)
{
//create the real file
try
{
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
var
fileRef
=
new
FileReferenceUserFileAsset
()
{
OriginalName
=
customAsset
.
DisplayName
,
CreatedAt
=
(
DateTime
)
_context
.
Entry
(
customAsset
)
.
Property
(
YapexDbContext
.
CreatedAt
)
.
CurrentValue
,
LastUpdatedAt
=
(
DateTime
)
_context
.
Entry
(
customAsset
)
.
Property
(
YapexDbContext
.
LastUpdatedAt
).
CurrentValue
,
MimeType
=
customAsset
.
MimeType
,
SizeInBytes
=
customAsset
.
Content
.
Length
,
Hash
=
""
,
};
var
conn
=
new
CustomProjectDescriptionWithFileAsAssetReference
()
{
CustomProjectDescription
=
customProjectDescription
,
FileReferenceUserFileAsset
=
fileRef
};
_context
.
CustomProjectDescriptionWithFileAsAssetReferences
.
Add
(
conn
);
_context
.
SaveChanges
();
if
(
fileRef
.
Id
<=
0
)
{
throw
new
Exception
(
"fileRef must be tracked in db context"
);
}
try
{
var
info
=
new
FileInfo
(
Path
.
Combine
(
basePath
,
fileRef
.
Id
.
ToString
()));
if
(
info
.
Exists
)
{
throw
new
Exception
(
$"file already exists:
{
info
.
FullName
}
"
);
}
using
(
var
stream
=
new
FileStream
(
info
.
FullName
,
FileMode
.
Create
))
{
stream
.
Write
(
customAsset
.
Content
,
0
,
customAsset
.
Content
.
Length
);
using
(
var
md5
=
MD5
.
Create
())
{
var
result
=
md5
.
ComputeHash
(
customAsset
.
Content
);
fileRef
.
Hash
=
String
.
Join
(
String
.
Empty
,
result
.
Select
(
p
=>
p
.
ToString
(
"x2"
)));
}
}
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
$"[ERROR] error creating file name:
{
customAsset
.
DisplayName
}
"
);
Console
.
WriteLine
(
e
.
Message
);
throw
;
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
count
++;
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
);
throw
;
}
}
}
Response
.
WriteAsync
(
"OK -"
+
count
);
}
[
HttpGet
(
"migrate/custom/project/markdown"
)]
public
void
MigrateMarkdownCustomProjectDescriptionContent
()
{
var
allDescriptions
=
_context
.
CustomProjectDescriptions
.
Include
(
p
=>
p
.
AssetReferences
)
.
ThenInclude
(
p
=>
p
.
FileReferenceUserFileAsset
)
.
Include
(
p
=>
p
.
Assets
)
.
ToList
();
int
count
=
0
;
int
count2
=
0
;
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
foreach
(
var
customProjectDescription
in
allDescriptions
)
{
if
(
customProjectDescription
.
Content
.
Contains
(
Constants
.
MarkdownAssetFileUrlPrefix
))
{
foreach
(
var
asset
in
customProjectDescription
.
Assets
)
{
//find asset ref
var
assetRef
=
customProjectDescription
.
AssetReferences
.
FirstOrDefault
(
p
=>
p
.
FileReferenceUserFileAsset
.
OriginalName
==
asset
.
DisplayName
&&
p
.
FileReferenceUserFileAsset
.
SizeInBytes
==
asset
.
Content
.
Length
);
if
(
assetRef
==
null
)
{
throw
new
Exception
(
$"could not find asset ref for asset id
{
asset
.
Id
}
for ex desc
{
customProjectDescription
.
Id
}
"
);
}
customProjectDescription
.
Content
=
customProjectDescription
.
Content
.
Replace
(
asset
.
AssetUrl
,
Constants
.
MarkdownAssetFileUrlPrefix
+
assetRef
.
FileReferenceUserFileAssetId
);
count2
++;
}
count
++;
}
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
Response
.
WriteAsync
(
$"OK -
{
count
}
- $
{
count2
}
"
);
}
[
HttpGet
(
"migrate/custom/project/tests"
)]
public
void
MigrateCustomProjectTestAssets
()
{
var
basePath
=
Files
.
GetUploadFilePath
(
UploadDirType
.
UserAssets
);
var
testsWithAssets
=
_context
.
CustomProjectTests
.
Include
(
p
=>
p
.
TestAssets
)
.
Where
(
p
=>
p
.
TestAssets
.
Count
>
0
)
.
ToList
()
;
int
count
=
0
;
foreach
(
var
customProjectTest
in
testsWithAssets
)
{
foreach
(
var
customProjectTestAsset
in
customProjectTest
.
TestAssets
)
{
//create the real file
try
{
using
(
var
transaction
=
_context
.
Database
.
BeginTransaction
())
{
try
{
var
fileRef
=
new
FileReferenceUserFileAsset
()
{
OriginalName
=
customProjectTestAsset
.
DisplayName
,
CreatedAt
=
(
DateTime
)
_context
.
Entry
(
customProjectTestAsset
)
.
Property
(
YapexDbContext
.
CreatedAt
)
.
CurrentValue
,
LastUpdatedAt
=
(
DateTime
)
_context
.
Entry
(
customProjectTestAsset
)
.
Property
(
YapexDbContext
.
LastUpdatedAt
).
CurrentValue
,
MimeType
=
customProjectTestAsset
.
MimeType
,
SizeInBytes
=
customProjectTestAsset
.
Content
.
Length
,
Hash
=
""
,
};
var
conn
=
new
CustomProjectTestWithFileAsAssetReference
()
{
CustomProjectTest
=
customProjectTest
,
FileReferenceUserFileAsset
=
fileRef
};
_context
.
CustomProjectTestWithFileAsAssetReferences
.
Add
(
conn
);
_context
.
SaveChanges
();
if
(
fileRef
.
Id
<=
0
)
{
throw
new
Exception
(
"fileRef must be tracked in db context"
);
}
try
{
var
info
=
new
FileInfo
(
Path
.
Combine
(
basePath
,
fileRef
.
Id
.
ToString
()));
if
(
info
.
Exists
)
{
throw
new
Exception
(
$"file already exists:
{
info
.
FullName
}
"
);
}
using
(
var
stream
=
new
FileStream
(
info
.
FullName
,
FileMode
.
Create
))
{
stream
.
Write
(
customProjectTestAsset
.
Content
,
0
,
customProjectTestAsset
.
Content
.
Length
);
using
(
var
md5
=
MD5
.
Create
())
{
var
result
=
md5
.
ComputeHash
(
customProjectTestAsset
.
Content
);
fileRef
.
Hash
=
String
.
Join
(
String
.
Empty
,
result
.
Select
(
p
=>
p
.
ToString
(
"x2"
)));
}
}
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
$"[ERROR] error creating file name:
{
customProjectTestAsset
.
DisplayName
}
"
);
Console
.
WriteLine
(
e
.
Message
);
throw
;
}
_context
.
SaveChanges
();
transaction
.
Commit
();
}
catch
(
Exception
e
)
{
transaction
.
Rollback
();
Console
.
WriteLine
(
e
);
throw
;
}
}
count
++;
}
catch
(
Exception
e
)
{
Console
.
WriteLine
(
e
);
throw
;
}
}
}
Response
.
WriteAsync
(
"OK -"
+
count
);
}
//
[HttpGet("migrate/markdown")]
//
public void MigrateMarkdownFiles()
//
{
//
var basePath = Files.GetUploadFilePath(UploadDirType.MarkdownAssets);
//
//
var exDescriptions = _context.ExerciseDescriptions
//
.Include(p => p.Assets)
//
.Where(p => p.Assets.Count > 0)
//
.ToList()
//
;
//
//
int count = 0;
//
foreach (var exerciseDescription in exDescriptions)
//
{
//
foreach (var descriptionAsset in exerciseDescription.Assets)
//
{
//
//create the real file
//
//
try
//
{
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
var fileRef = new FileReferenceMarkdownAsset()
//
{
//
OriginalName = descriptionAsset.DisplayName,
//
CreatedAt = (DateTime) _context.Entry(descriptionAsset)
//
.Property(YapexDbContext.CreatedAt)
//
.CurrentValue,
//
LastUpdatedAt = (DateTime) _context.Entry(descriptionAsset)
//
.Property(YapexDbContext.LastUpdatedAt).CurrentValue,
//
MimeType = descriptionAsset.MimeType,
//
SizeInBytes = descriptionAsset.Content.Length,
//
Hash = "",
//
};
//
//
var conn = new ExerciseDescriptionWithFileAsAssetReference()
//
{
//
ExerciseDescription = exerciseDescription,
//
FileReferenceMarkdownAsset = fileRef
//
};
//
//
_context.ExerciseDescriptionWithFileAsAssetReferences.Add(conn);
//
_context.SaveChanges();
//
//
if (fileRef.Id <= 0)
//
{
//
throw new Exception("fileRef must be tracked in db context");
//
}
//
//
try
//
{
//
var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString()));
//
//
if (info.Exists)
//
{
//
throw new Exception("file already exists");
//
}
//
//
using (var stream = new FileStream(info.FullName, FileMode.Create))
//
{
//
stream.Write(descriptionAsset.Content, 0, descriptionAsset.Content.Length);
//
//
using (var md5 = MD5.Create())
//
{
//
var result = md5.ComputeHash(descriptionAsset.Content);
//
fileRef.Hash = String.Join(String.Empty,
//
result.Select(p => p.ToString("x2")));
//
}
//
}
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(
//
$"[ERROR] error creating file name: {descriptionAsset.DisplayName}");
//
Console.WriteLine(e.Message);
//
throw;
//
}
//
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
count++;
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
}
//
//
//
Response.WriteAsync("OK -" + count);
//
}
//
//
//
[HttpGet("migrate/ex/markdown")]
//
public void MigrateMarkdownExerciseDescriptionContent()
//
{
//
var allDescriptions = _context.ExerciseDescriptions
//
.Include(p => p.AssetReferences)
//
.ThenInclude(p => p.FileReferenceMarkdownAsset)
//
.Include(p => p.Assets)
//
.ToList();
//
//
//
int count = 0;
//
int count2 = 0;
//
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
foreach (var exerciseDescription in allDescriptions)
//
{
//
if (exerciseDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix))
//
{
//
//
foreach (var asset in exerciseDescription.Assets)
//
{
//
//find asset ref
//
//
var assetRef = exerciseDescription.AssetReferences.FirstOrDefault(p =>
//
p.FileReferenceMarkdownAsset.OriginalName == asset.DisplayName &&
//
p.FileReferenceMarkdownAsset.SizeInBytes == asset.Content.Length);
//
//
if (assetRef == null)
//
{
//
throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {exerciseDescription.Id}");
//
}
//
//
exerciseDescription.Content = exerciseDescription.Content.Replace(asset.AssetUrl,
//
Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceMarkdownAssetId);
//
count2++;
//
}
//
//
count++;
//
//
}
//
}
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
//
Response.WriteAsync($"OK - {count} - ${count2}");
//
}
//
//
//
[HttpGet("migrate/tests")]
//
public void MigrateTestFiles()
//
{
//
var basePath = Files.GetUploadFilePath(UploadDirType.TestAssets);
//
//
var testsWithAssets = _context.Tests
//
.Include(p => p.TestAssets)
//
.Where(p => p.TestAssets.Count > 0)
//
.ToList()
//
;
//
//
int count = 0;
//
foreach (var testWithAsset in testsWithAssets)
//
{
//
foreach (var testAsset in testWithAsset.TestAssets)
//
{
//
//create the real file
//
//
try
//
{
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
var fileRef = new FileReferenceTestAsset()
//
{
//
OriginalName = testAsset.DisplayName,
//
CreatedAt = (DateTime) _context.Entry(testAsset)
//
.Property(YapexDbContext.CreatedAt)
//
.CurrentValue,
//
LastUpdatedAt = (DateTime) _context.Entry(testAsset)
//
.Property(YapexDbContext.LastUpdatedAt).CurrentValue,
//
MimeType = testAsset.MimeType,
//
SizeInBytes = testAsset.Content.Length,
//
Hash = "",
//
};
//
//
var conn = new TestWithFileAsAssetReference()
//
{
//
Test = testWithAsset,
//
FileReferenceTestAsset = fileRef
//
};
//
//
_context.TestWithFileAsAssetReferences.Add(conn);
//
_context.SaveChanges();
//
//
if (fileRef.Id <= 0)
//
{
//
throw new Exception("fileRef must be tracked in db context");
//
}
//
//
try
//
{
//
var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString()));
//
//
if (info.Exists)
//
{
//
throw new Exception($"file already exists: {info.FullName}");
//
}
//
//
using (var stream = new FileStream(info.FullName, FileMode.Create))
//
{
//
stream.Write(testAsset.Content, 0, testAsset.Content.Length);
//
//
using (var md5 = MD5.Create())
//
{
//
var result = md5.ComputeHash(testAsset.Content);
//
fileRef.Hash = String.Join(String.Empty,
//
result.Select(p => p.ToString("x2")));
//
}
//
}
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(
//
$"[ERROR] error creating file name: {testAsset.DisplayName}");
//
Console.WriteLine(e.Message);
//
throw;
//
}
//
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
count++;
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
}
//
//
//
Response.WriteAsync("OK -" + count);
//
}
//
//
//
[HttpGet("migrate/custom/tests")]
//
public void MigrateCustomTestAssets()
//
{
//
var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets);
//
//
var testsWithAssets = _context.CustomTest
//
.Include(p => p.TestAssets)
//
.Where(p => p.TestAssets.Count > 0)
//
.ToList()
//
;
//
//
int count = 0;
//
//
foreach (var customTest in testsWithAssets)
//
{
//
foreach (var customTestAsset in customTest.TestAssets)
//
{
//
//create the real file
//
//
try
//
{
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
var fileRef = new FileReferenceUserFileAsset()
//
{
//
OriginalName = customTestAsset.DisplayName,
//
CreatedAt = (DateTime) _context.Entry(customTestAsset)
//
.Property(YapexDbContext.CreatedAt)
//
.CurrentValue,
//
LastUpdatedAt = (DateTime) _context.Entry(customTestAsset)
//
.Property(YapexDbContext.LastUpdatedAt).CurrentValue,
//
MimeType = customTestAsset.MimeType,
//
SizeInBytes = customTestAsset.Content.Length,
//
Hash = "",
//
};
//
//
var conn = new CustomTestWithFileAsAssetReference()
//
{
//
CustomTest = customTest,
//
FileReferenceUserFileAsset = fileRef
//
};
//
//
_context.CustomTestWithFileAsAssetReferences.Add(conn);
//
_context.SaveChanges();
//
//
if (fileRef.Id <= 0)
//
{
//
throw new Exception("fileRef must be tracked in db context");
//
}
//
//
try
//
{
//
var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString()));
//
//
if (info.Exists)
//
{
//
throw new Exception($"file already exists: {info.FullName}");
//
}
//
//
using (var stream = new FileStream(info.FullName, FileMode.Create))
//
{
//
stream.Write(customTestAsset.Content, 0, customTestAsset.Content.Length);
//
//
using (var md5 = MD5.Create())
//
{
//
var result = md5.ComputeHash(customTestAsset.Content);
//
fileRef.Hash = String.Join(String.Empty,
//
result.Select(p => p.ToString("x2")));
//
}
//
}
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(
//
$"[ERROR] error creating file name: {customTestAsset.DisplayName}");
//
Console.WriteLine(e.Message);
//
throw;
//
}
//
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
count++;
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
}
//
//
Response.WriteAsync("OK -" + count);
//
//
}
//
//
//
[HttpGet("migrate/custom/project/description")]
//
public void MigrateCustomProjectDescriptionAssets()
//
{
//
var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets);
//
//
var customProjectDescriptions = _context.CustomProjectDescriptions
//
.Include(p => p.Assets)
//
.Where(p => p.Assets.Count > 0)
//
.ToList()
//
;
//
//
int count = 0;
//
//
foreach (var customProjectDescription in customProjectDescriptions)
//
{
//
foreach (var customAsset in customProjectDescription.Assets)
//
{
//
//create the real file
//
//
try
//
{
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
var fileRef = new FileReferenceUserFileAsset()
//
{
//
OriginalName = customAsset.DisplayName,
//
CreatedAt = (DateTime) _context.Entry(customAsset)
//
.Property(YapexDbContext.CreatedAt)
//
.CurrentValue,
//
LastUpdatedAt = (DateTime) _context.Entry(customAsset)
//
.Property(YapexDbContext.LastUpdatedAt).CurrentValue,
//
MimeType = customAsset.MimeType,
//
SizeInBytes = customAsset.Content.Length,
//
Hash = "",
//
};
//
//
var conn = new CustomProjectDescriptionWithFileAsAssetReference()
//
{
//
CustomProjectDescription = customProjectDescription,
//
FileReferenceUserFileAsset = fileRef
//
};
//
//
_context.CustomProjectDescriptionWithFileAsAssetReferences.Add(conn);
//
_context.SaveChanges();
//
//
if (fileRef.Id <= 0)
//
{
//
throw new Exception("fileRef must be tracked in db context");
//
}
//
//
try
//
{
//
var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString()));
//
//
if (info.Exists)
//
{
//
throw new Exception($"file already exists: {info.FullName}");
//
}
//
//
using (var stream = new FileStream(info.FullName, FileMode.Create))
//
{
//
stream.Write(customAsset.Content, 0, customAsset.Content.Length);
//
//
using (var md5 = MD5.Create())
//
{
//
var result = md5.ComputeHash(customAsset.Content);
//
fileRef.Hash = String.Join(String.Empty,
//
result.Select(p => p.ToString("x2")));
//
}
//
}
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(
//
$"[ERROR] error creating file name: {customAsset.DisplayName}");
//
Console.WriteLine(e.Message);
//
throw;
//
}
//
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
count++;
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
}
//
//
Response.WriteAsync("OK -" + count);
//
//
}
//
//
[HttpGet("migrate/custom/project/markdown")]
//
public void MigrateMarkdownCustomProjectDescriptionContent()
//
{
//
//
var allDescriptions = _context.CustomProjectDescriptions
//
.Include(p => p.AssetReferences)
//
.ThenInclude(p => p.FileReferenceUserFileAsset)
//
.Include(p => p.Assets)
//
.ToList();
//
//
//
int count = 0;
//
int count2 = 0;
//
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
foreach (var customProjectDescription in allDescriptions)
//
{
//
if (customProjectDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix))
//
{
//
//
foreach (var asset in customProjectDescription.Assets)
//
{
//
//find asset ref
//
//
var assetRef = customProjectDescription.AssetReferences.FirstOrDefault(p =>
//
p.FileReferenceUserFileAsset.OriginalName == asset.DisplayName &&
//
p.FileReferenceUserFileAsset.SizeInBytes == asset.Content.Length);
//
//
if (assetRef == null)
//
{
//
throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {customProjectDescription.Id}");
//
}
//
//
customProjectDescription.Content = customProjectDescription.Content.Replace(asset.AssetUrl,
//
Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceUserFileAssetId);
//
count2++;
//
}
//
//
count++;
//
//
}
//
}
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
//
Response.WriteAsync($"OK - {count} - ${count2}");
//
}
//
//
[HttpGet("migrate/custom/project/tests")]
//
public void MigrateCustomProjectTestAssets()
//
{
//
var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets);
//
//
var testsWithAssets = _context.CustomProjectTests
//
.Include(p => p.TestAssets)
//
.Where(p => p.TestAssets.Count > 0)
//
.ToList()
//
;
//
//
int count = 0;
//
//
foreach (var customProjectTest in testsWithAssets)
//
{
//
foreach (var customProjectTestAsset in customProjectTest.TestAssets)
//
{
//
//create the real file
//
//
try
//
{
//
using (var transaction = _context.Database.BeginTransaction())
//
{
//
try
//
{
//
var fileRef = new FileReferenceUserFileAsset()
//
{
//
OriginalName = customProjectTestAsset.DisplayName,
//
CreatedAt = (DateTime) _context.Entry(customProjectTestAsset)
//
.Property(YapexDbContext.CreatedAt)
//
.CurrentValue,
//
LastUpdatedAt = (DateTime) _context.Entry(customProjectTestAsset)
//
.Property(YapexDbContext.LastUpdatedAt).CurrentValue,
//
MimeType = customProjectTestAsset.MimeType,
//
SizeInBytes = customProjectTestAsset.Content.Length,
//
Hash = "",
//
};
//
//
var conn = new CustomProjectTestWithFileAsAssetReference()
//
{
//
CustomProjectTest = customProjectTest,
//
FileReferenceUserFileAsset = fileRef
//
};
//
//
_context.CustomProjectTestWithFileAsAssetReferences.Add(conn);
//
_context.SaveChanges();
//
//
if (fileRef.Id <= 0)
//
{
//
throw new Exception("fileRef must be tracked in db context");
//
}
//
//
try
//
{
//
var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString()));
//
//
if (info.Exists)
//
{
//
throw new Exception($"file already exists: {info.FullName}");
//
}
//
//
using (var stream = new FileStream(info.FullName, FileMode.Create))
//
{
//
stream.Write(customProjectTestAsset.Content, 0, customProjectTestAsset.Content.Length);
//
//
using (var md5 = MD5.Create())
//
{
//
var result = md5.ComputeHash(customProjectTestAsset.Content);
//
fileRef.Hash = String.Join(String.Empty,
//
result.Select(p => p.ToString("x2")));
//
}
//
}
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(
//
$"[ERROR] error creating file name: {customProjectTestAsset.DisplayName}");
//
Console.WriteLine(e.Message);
//
throw;
//
}
//
//
//
_context.SaveChanges();
//
transaction.Commit();
//
}
//
catch (Exception e)
//
{
//
transaction.Rollback();
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
count++;
//
}
//
catch (Exception e)
//
{
//
Console.WriteLine(e);
//
throw;
//
}
//
}
//
//
}
//
//
Response.WriteAsync("OK -" + count);
//
//
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment