diff --git a/SUBD_LABA/Database/Database.csproj b/SUBD_LABA/Database/Database.csproj
index 176d47a..1c657c8 100644
--- a/SUBD_LABA/Database/Database.csproj
+++ b/SUBD_LABA/Database/Database.csproj
@@ -7,6 +7,8 @@
+
+
diff --git a/SUBD_LABA/Database/ImplementsMongoDB.cs b/SUBD_LABA/Database/ImplementsMongoDB.cs
new file mode 100644
index 0000000..192ab72
--- /dev/null
+++ b/SUBD_LABA/Database/ImplementsMongoDB.cs
@@ -0,0 +1,244 @@
+using Commentbase;
+using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.ConstrainedExecution;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Database
+{
+ public class ImplementsMongoDB : Abstracts
+ {
+ private IMongoDatabase _database;
+ private IMongoCollection _albumCollection;
+ private IMongoCollection _locationCollection;
+ private IMongoCollection _authorCollection;
+ private IMongoCollection _photoCollection;
+ private IMongoCollection _commentCollection;
+ private IMongoCollection _sequenceCollection;
+
+ public ImplementsMongoDB()
+ {
+ var client = new MongoClient("mongodb://localhost:27017");
+ _database = client.GetDatabase("SUBD");
+
+ _albumCollection = _database.GetCollection("Album");
+ _locationCollection = _database.GetCollection("Location");
+ _authorCollection = _database.GetCollection("Author");
+ _photoCollection = _database.GetCollection("Photo");
+ _commentCollection = _database.GetCollection("Comment");
+ _sequenceCollection = _database.GetCollection("sequence");
+ }
+ //Album
+ public override void CreateAlbum(Album album)
+ {
+ if (album.Id == 0)
+ {
+ Sequence sequence = _sequenceCollection.Find(seq => seq.Id == "Album").FirstOrDefault();
+ sequence.Count++;
+ album.Id = sequence.Count;
+ _sequenceCollection.ReplaceOne(seq => seq.Id == "Album", sequence);
+ }
+ _albumCollection.InsertOne(album);
+ }
+
+ public override List GetAlbums()
+ {
+ return _albumCollection.Find(_ => true).ToList();
+ }
+
+ public override Album GetAlbum(int id)
+ {
+ return _albumCollection.Find(album => album.Id == id).FirstOrDefault();
+ }
+
+ public override void UpdateAlbum(Album album)
+ {
+ _albumCollection.ReplaceOne(c => c.Id == album.Id, album);
+ }
+
+ public override void DeleteAlbum(int id)
+ {
+ _albumCollection.DeleteOne(album => album.Id == id);
+ }
+ public override Album GetAlbum(string title)
+ {
+ return _albumCollection.Find(album => album.Title == title).FirstOrDefault();
+ }
+ public override void DeleteAllAlbums()
+ {
+ _albumCollection.DeleteManyAsync(Builders.Filter.Empty);
+ }
+
+ // Location
+ public override void CreateLocation(Location location)
+ {
+ if (location.Id == 0)
+ {
+ Sequence sequence = _sequenceCollection.Find(seq => seq.Id == "Location").FirstOrDefault();
+ sequence.Count++;
+ location.Id = sequence.Count;
+ _sequenceCollection.ReplaceOne(seq => seq.Id == "Location", sequence);
+ }
+ _locationCollection.InsertOne(location);
+ }
+
+ public override List GetLocations()
+ {
+ return _locationCollection.Find(_ => true).ToList();
+ }
+
+ public override Location GetLocation(int id)
+ {
+ return _locationCollection.Find(location => location.Id == id).FirstOrDefault();
+ }
+
+ public override void UpdateLocation(Location location)
+ {
+ _locationCollection.ReplaceOne(c => c.Id == location.Id, location);
+ }
+
+ public override void DeleteLocation(int id)
+ {
+ _locationCollection.DeleteOne(location => location.Id == id);
+ }
+ public override Location GetLocation(string name)
+ {
+ return _locationCollection.Find(location => location.Name == name).FirstOrDefault();
+ }
+ public override void DeleteAllLocations()
+ {
+ _locationCollection.DeleteManyAsync(Builders.Filter.Empty);
+ }
+
+ // Author
+ public override void CreateAuthor(Author author)
+ {
+ if (author.Id == 0)
+ {
+ Sequence sequence = _sequenceCollection.Find(seq => seq.Id == "Author").FirstOrDefault();
+ sequence.Count++;
+ author.Id = sequence.Count;
+ _sequenceCollection.ReplaceOne(seq => seq.Id == "Author", sequence);
+ }
+ _authorCollection.InsertOne(author);
+ }
+
+ public override List GetAuthors()
+ {
+ return _authorCollection.Find(_ => true).ToList();
+ }
+
+ public override Author GetAuthor(int id)
+ {
+ return _authorCollection.Find(author => author.Id == id).FirstOrDefault();
+ }
+
+ public override void UpdateAuthor(Author author)
+ {
+ _authorCollection.ReplaceOne(r => r.Id == author.Id, author);
+ }
+
+ public override void DeleteAuthor(int id)
+ {
+ _authorCollection.DeleteOne(author => author.Id == id);
+ }
+ public override Author GetAuthor(string name)
+ {
+ return _authorCollection.Find(author => author.Name == name).FirstOrDefault();
+ }
+ public override void DeleteAllAuthors()
+ {
+ _authorCollection.DeleteManyAsync(Builders.Filter.Empty);
+ }
+
+ // Photo
+ public override void CreatePhoto(Photo photo)
+ {
+ if (photo.Id == 0)
+ {
+ Sequence sequence = _sequenceCollection.Find(seq => seq.Id == "Photo").FirstOrDefault();
+ sequence.Count++;
+ photo.Id = sequence.Count;
+ _sequenceCollection.ReplaceOne(seq => seq.Id == "Photo", sequence);
+ }
+ _photoCollection.InsertOne(photo);
+ }
+
+ public override List GetPhotos()
+ {
+ return _photoCollection.Find(_ => true).ToList();
+ }
+
+ public override Photo GetPhoto(int id)
+ {
+ return _photoCollection.Find(photo => photo.Id == id).FirstOrDefault();
+ }
+
+ public override void UpdatePhoto(Photo photo)
+ {
+ _photoCollection.ReplaceOne(b => b.Id == photo.Id, photo);
+ }
+
+ public override void DeletePhoto(int id)
+ {
+ _photoCollection.DeleteOne(photo => photo.Id == id);
+ }
+ public override Photo GetPhoto(int AlbumId, int LocationId, int AuthorId)
+ {
+ return _photoCollection.Find(photo => (photo.AlbumId == AlbumId && photo.LocationId == LocationId && photo.AuthorId == AuthorId)).FirstOrDefault();
+ }
+ public override void DeleteAllPhotos()
+ {
+ _photoCollection.DeleteManyAsync(Builders.Filter.Empty);
+ }
+
+ // Comment
+ public override void CreateComment(Comment comment)
+ {
+ if (comment.Id == 0)
+ {
+ Sequence sequence = _sequenceCollection.Find(seq => seq.Id == "Comment").FirstOrDefault();
+ sequence.Count++;
+ comment.Id = sequence.Count;
+ _sequenceCollection.ReplaceOne(seq => seq.Id == "Comment", sequence);
+ }
+ _commentCollection.InsertOne(comment);
+ }
+
+ public override List GetComments()
+ {
+ return _commentCollection.Find(_ => true).ToList();
+ }
+
+ public override Comment GetComment(int id)
+ {
+ return _commentCollection.Find(comment => comment.Id == id).FirstOrDefault();
+ }
+
+ public override void UpdateComment(Comment comment)
+ {
+ _commentCollection.ReplaceOne(b => b.Id == comment.Id, comment);
+ }
+
+ public override void DeleteComment(int id)
+ {
+ _commentCollection.DeleteOne(comment => comment.Id == id);
+ }
+ public override Comment GetCommentPhoto(int PhotoId)
+ {
+ return _commentCollection.Find(comment => comment.PhotoId == PhotoId).FirstOrDefault();
+ }
+ public override void DeleteAllComments()
+ {
+ _commentCollection.DeleteManyAsync(Builders.Filter.Empty);
+ }
+
+ public void UpdateSequence(Sequence sequence)
+ {
+ _sequenceCollection.ReplaceOne(seq => seq.Id == sequence.Id, sequence);
+ }
+ }
+}
diff --git a/SUBD_LABA/Database/Implements.cs b/SUBD_LABA/Database/ImplementsPostgres.cs
similarity index 94%
rename from SUBD_LABA/Database/Implements.cs
rename to SUBD_LABA/Database/ImplementsPostgres.cs
index 08f8175..4ba1e2e 100644
--- a/SUBD_LABA/Database/Implements.cs
+++ b/SUBD_LABA/Database/ImplementsPostgres.cs
@@ -1,5 +1,6 @@
using Commentbase;
using Npgsql;
+using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -8,7 +9,7 @@ using System.Threading.Tasks;
namespace Database
{
- public class Implements : Abstracts
+ public class ImplementsPostgres : Abstracts
{
private NpgsqlConnection GetConnect()
{
@@ -523,5 +524,39 @@ namespace Database
using var cmd = new NpgsqlCommand($"DELETE FROM Comment", conn);
cmd.ExecuteNonQuery();
}
+ private Sequence GetSequence(string nameInPg, string nameInApp)
+ {
+ using var conn = GetConnect();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT sequencename, last_value " +
+ "FROM pg_sequences " +
+ "WHERE sequencename = '" + nameInPg + "_id_seq'", conn);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Sequence
+ {
+ Id = nameInApp,
+ Count = reader.GetInt32(1)
+ };
+ }
+ else
+ return new Sequence
+ {
+ Id = nameInApp,
+ Count = 0
+ };
+ }
+
+ public List GetSequences()
+ {
+ return new List{
+ GetSequence("album", "Album"),
+ GetSequence("location", "Location"),
+ GetSequence("author", "Author"),
+ GetSequence("photo", "Photo"),
+ GetSequence("comment", "Comment")
+ };
+ }
}
}
diff --git a/SUBD_LABA/Database/Models.cs b/SUBD_LABA/Database/Models.cs
index 6bd4c44..3104021 100644
--- a/SUBD_LABA/Database/Models.cs
+++ b/SUBD_LABA/Database/Models.cs
@@ -1,4 +1,6 @@
-using System;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -8,18 +10,21 @@ namespace Database
{
public class Album
{
+ [BsonRepresentation(BsonType.Int32)]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
public class Location
{
+ [BsonRepresentation(BsonType.Int32)]
public int Id { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
}
public class Author
{
+ [BsonRepresentation(BsonType.Int32)]
public int Id { get; set; }
public string Name { get; set; }
public string PhoneNum { get; set; }
@@ -27,6 +32,7 @@ namespace Database
}
public class Photo
{
+ [BsonRepresentation(BsonType.Int32)]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
@@ -39,9 +45,16 @@ namespace Database
}
public class Comment
{
+ [BsonRepresentation(BsonType.Int32)]
public int Id { get; set; }
public DateTime PostDate { get; set; }
public string Content { get; set; }
public int PhotoId { get; set; }
}
+ public class Sequence
+ {
+ [BsonRepresentation(BsonType.String)]
+ public string Id { get; set; }
+ public int Count { get; set; }
+ }
}
diff --git a/SUBD_LABA/View/MainForm.Designer.cs b/SUBD_LABA/View/MainForm.Designer.cs
index daeecaf..849b9d1 100644
--- a/SUBD_LABA/View/MainForm.Designer.cs
+++ b/SUBD_LABA/View/MainForm.Designer.cs
@@ -28,279 +28,167 @@
///
private void InitializeComponent()
{
- button1 = new Button();
- button2 = new Button();
- button3 = new Button();
- button4 = new Button();
- button5 = new Button();
- button6 = new Button();
- button7 = new Button();
- button8 = new Button();
- button9 = new Button();
- button10 = new Button();
- button11 = new Button();
- button12 = new Button();
- button13 = new Button();
- button14 = new Button();
- button15 = new Button();
- button16 = new Button();
- button17 = new Button();
- button18 = new Button();
- button19 = new Button();
- button20 = new Button();
+ menuStrip1 = new MenuStrip();
+ сущностиToolStripMenuItem = new ToolStripMenuItem();
+ albumToolStripMenuItem = new ToolStripMenuItem();
+ locationToolStripMenuItem = new ToolStripMenuItem();
+ authorToolStripMenuItem = new ToolStripMenuItem();
+ photoToolStripMenuItem = new ToolStripMenuItem();
+ commentToolStripMenuItem = new ToolStripMenuItem();
+ trackBarDB = new TrackBar();
+ labelMongoDB = new Label();
+ label1 = new Label();
+ buttonTransferDataFromPostgresToMongo = new Button();
+ buttonTest = new Button();
+ textBoxTest = new TextBox();
+ menuStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)trackBarDB).BeginInit();
SuspendLayout();
//
- // button1
+ // menuStrip1
//
- button1.Location = new Point(41, 32);
- button1.Name = "button1";
- button1.Size = new Size(137, 29);
- button1.TabIndex = 0;
- button1.Text = "Альбом";
- button1.UseVisualStyleBackColor = true;
- button1.Click += button1_Click;
+ menuStrip1.ImageScalingSize = new Size(20, 20);
+ menuStrip1.Items.AddRange(new ToolStripItem[] { сущностиToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(1135, 28);
+ menuStrip1.TabIndex = 20;
+ menuStrip1.Text = "menuStrip1";
//
- // button2
+ // сущностиToolStripMenuItem
//
- button2.Location = new Point(243, 32);
- button2.Name = "button2";
- button2.Size = new Size(137, 29);
- button2.TabIndex = 1;
- button2.Text = "Локация";
- button2.UseVisualStyleBackColor = true;
- button2.Click += button2_Click;
+ сущностиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { albumToolStripMenuItem, locationToolStripMenuItem, authorToolStripMenuItem, photoToolStripMenuItem, commentToolStripMenuItem });
+ сущностиToolStripMenuItem.Name = "сущностиToolStripMenuItem";
+ сущностиToolStripMenuItem.Size = new Size(91, 24);
+ сущностиToolStripMenuItem.Text = "Сущности";
//
- // button3
+ // albumToolStripMenuItem
//
- button3.Location = new Point(451, 32);
- button3.Name = "button3";
- button3.Size = new Size(137, 29);
- button3.TabIndex = 2;
- button3.Text = "Автор";
- button3.UseVisualStyleBackColor = true;
- button3.Click += button3_Click;
+ albumToolStripMenuItem.Name = "albumToolStripMenuItem";
+ albumToolStripMenuItem.Size = new Size(190, 26);
+ albumToolStripMenuItem.Text = "Альбом";
+ albumToolStripMenuItem.Click += albumToolStripMenuItem_Click;
//
- // button4
+ // locationToolStripMenuItem
//
- button4.Location = new Point(675, 32);
- button4.Name = "button4";
- button4.Size = new Size(137, 29);
- button4.TabIndex = 3;
- button4.Text = "Фотография";
- button4.UseVisualStyleBackColor = true;
- button4.Click += button4_Click;
+ locationToolStripMenuItem.Name = "locationToolStripMenuItem";
+ locationToolStripMenuItem.Size = new Size(190, 26);
+ locationToolStripMenuItem.Text = "Локация";
+ locationToolStripMenuItem.Click += locationToolStripMenuItem_Click;
//
- // button5
+ // authorToolStripMenuItem
//
- button5.Location = new Point(922, 32);
- button5.Name = "button5";
- button5.Size = new Size(137, 29);
- button5.TabIndex = 4;
- button5.Text = "Комментарий";
- button5.UseVisualStyleBackColor = true;
- button5.Click += button5_Click;
+ authorToolStripMenuItem.Name = "authorToolStripMenuItem";
+ authorToolStripMenuItem.Size = new Size(190, 26);
+ authorToolStripMenuItem.Text = "Автор";
+ authorToolStripMenuItem.Click += authorToolStripMenuItem_Click;
//
- // button6
+ // photoToolStripMenuItem
//
- button6.Location = new Point(12, 120);
- button6.Name = "button6";
- button6.Size = new Size(189, 29);
- button6.TabIndex = 5;
- button6.Text = "Создать 1000 альбомов";
- button6.UseVisualStyleBackColor = true;
- button6.Click += button6_Click;
+ photoToolStripMenuItem.Name = "photoToolStripMenuItem";
+ photoToolStripMenuItem.Size = new Size(190, 26);
+ photoToolStripMenuItem.Text = "Фотография";
+ photoToolStripMenuItem.Click += photoToolStripMenuItem_Click;
//
- // button7
+ // commentToolStripMenuItem
//
- button7.Location = new Point(216, 120);
- button7.Name = "button7";
- button7.Size = new Size(189, 29);
- button7.TabIndex = 6;
- button7.Text = "Создать 1000 локаций";
- button7.UseVisualStyleBackColor = true;
- button7.Click += button7_Click;
+ commentToolStripMenuItem.Name = "commentToolStripMenuItem";
+ commentToolStripMenuItem.Size = new Size(190, 26);
+ commentToolStripMenuItem.Text = "Комментарий";
+ commentToolStripMenuItem.Click += commentToolStripMenuItem_Click;
//
- // button8
+ // trackBarDB
//
- button8.Location = new Point(424, 120);
- button8.Name = "button8";
- button8.Size = new Size(189, 29);
- button8.TabIndex = 7;
- button8.Text = "Создать 1000 авторов";
- button8.UseVisualStyleBackColor = true;
- button8.Click += button8_Click;
+ trackBarDB.LargeChange = 1;
+ trackBarDB.Location = new Point(31, 89);
+ trackBarDB.Maximum = 100;
+ trackBarDB.Name = "trackBarDB";
+ trackBarDB.Orientation = Orientation.Vertical;
+ trackBarDB.Size = new Size(56, 119);
+ trackBarDB.TabIndex = 3;
+ trackBarDB.MouseUp += trackBarDB_MouseUp;
//
- // button9
+ // labelMongoDB
//
- button9.Location = new Point(650, 120);
- button9.Name = "button9";
- button9.Size = new Size(201, 29);
- button9.TabIndex = 8;
- button9.Text = "Создать 1000 фотографий";
- button9.UseVisualStyleBackColor = true;
- button9.Click += button9_Click;
+ labelMongoDB.AutoSize = true;
+ labelMongoDB.Location = new Point(93, 89);
+ labelMongoDB.Name = "labelMongoDB";
+ labelMongoDB.Size = new Size(77, 20);
+ labelMongoDB.TabIndex = 22;
+ labelMongoDB.Text = "MongoDB";
//
- // button10
+ // label1
//
- button10.Location = new Point(880, 120);
- button10.Name = "button10";
- button10.Size = new Size(218, 29);
- button10.TabIndex = 9;
- button10.Text = "Создать 1000 комментариев";
- button10.UseVisualStyleBackColor = true;
- button10.Click += button10_Click;
+ label1.AutoSize = true;
+ label1.Location = new Point(93, 188);
+ label1.Name = "label1";
+ label1.Size = new Size(64, 20);
+ label1.TabIndex = 23;
+ label1.Text = "Postgres";
//
- // button11
+ // buttonTransferDataFromPostgresToMongo
//
- button11.Location = new Point(12, 187);
- button11.Name = "button11";
- button11.Size = new Size(198, 29);
- button11.TabIndex = 10;
- button11.Text = "Изменить 1000 альбомов";
- button11.UseVisualStyleBackColor = true;
- button11.Click += button11_Click;
+ buttonTransferDataFromPostgresToMongo.Location = new Point(834, 80);
+ buttonTransferDataFromPostgresToMongo.Name = "buttonTransferDataFromPostgresToMongo";
+ buttonTransferDataFromPostgresToMongo.Size = new Size(245, 128);
+ buttonTransferDataFromPostgresToMongo.TabIndex = 24;
+ buttonTransferDataFromPostgresToMongo.Text = "Transfer data from PostgresSQL to MongoDB";
+ buttonTransferDataFromPostgresToMongo.UseVisualStyleBackColor = true;
+ buttonTransferDataFromPostgresToMongo.Click += buttonTransferDataFromPostgresToMongo_Click;
//
- // button12
+ // buttonTest
//
- button12.Location = new Point(216, 187);
- button12.Name = "button12";
- button12.Size = new Size(189, 29);
- button12.TabIndex = 11;
- button12.Text = "Изменить 1000 локаций";
- button12.UseVisualStyleBackColor = true;
- button12.Click += button12_Click;
+ buttonTest.Location = new Point(439, 318);
+ buttonTest.Name = "buttonTest";
+ buttonTest.Size = new Size(94, 29);
+ buttonTest.TabIndex = 25;
+ buttonTest.Text = "test";
+ buttonTest.UseVisualStyleBackColor = true;
+ buttonTest.Click += buttonTest_Click;
//
- // button13
+ // textBoxTest
//
- button13.Location = new Point(424, 187);
- button13.Name = "button13";
- button13.Size = new Size(189, 29);
- button13.TabIndex = 12;
- button13.Text = "Изменить 1000 авторов";
- button13.UseVisualStyleBackColor = true;
- button13.Click += button13_Click;
- //
- // button14
- //
- button14.Location = new Point(639, 187);
- button14.Name = "button14";
- button14.Size = new Size(224, 29);
- button14.TabIndex = 13;
- button14.Text = "Изменить 1000 фотографий";
- button14.UseVisualStyleBackColor = true;
- button14.Click += button14_Click;
- //
- // button15
- //
- button15.Location = new Point(869, 187);
- button15.Name = "button15";
- button15.Size = new Size(239, 29);
- button15.TabIndex = 14;
- button15.Text = "Изменить 1000 комментариев";
- button15.UseVisualStyleBackColor = true;
- button15.Click += button15_Click;
- //
- // button16
- //
- button16.Location = new Point(12, 257);
- button16.Name = "button16";
- button16.Size = new Size(198, 29);
- button16.TabIndex = 15;
- button16.Text = "Удалить 1000 альбомов";
- button16.UseVisualStyleBackColor = true;
- button16.Click += button16_Click;
- //
- // button17
- //
- button17.Location = new Point(216, 257);
- button17.Name = "button17";
- button17.Size = new Size(189, 29);
- button17.TabIndex = 16;
- button17.Text = "Удалить 1000 локаций";
- button17.UseVisualStyleBackColor = true;
- button17.Click += button17_Click;
- //
- // button18
- //
- button18.Location = new Point(424, 257);
- button18.Name = "button18";
- button18.Size = new Size(189, 29);
- button18.TabIndex = 17;
- button18.Text = "Удалить 1000 авторов";
- button18.UseVisualStyleBackColor = true;
- button18.Click += button18_Click;
- //
- // button19
- //
- button19.Location = new Point(639, 257);
- button19.Name = "button19";
- button19.Size = new Size(224, 29);
- button19.TabIndex = 18;
- button19.Text = "Удалить 1000 фотографий";
- button19.UseVisualStyleBackColor = true;
- button19.Click += button19_Click;
- //
- // button20
- //
- button20.Location = new Point(869, 257);
- button20.Name = "button20";
- button20.Size = new Size(239, 29);
- button20.TabIndex = 19;
- button20.Text = "Удалить 1000 комментариев";
- button20.UseVisualStyleBackColor = true;
- button20.Click += button20_Click;
+ textBoxTest.Location = new Point(310, 80);
+ textBoxTest.Multiline = true;
+ textBoxTest.Name = "textBoxTest";
+ textBoxTest.Size = new Size(377, 128);
+ textBoxTest.TabIndex = 26;
//
// MainForm
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(1131, 318);
- Controls.Add(button20);
- Controls.Add(button19);
- Controls.Add(button18);
- Controls.Add(button17);
- Controls.Add(button16);
- Controls.Add(button15);
- Controls.Add(button14);
- Controls.Add(button13);
- Controls.Add(button12);
- Controls.Add(button11);
- Controls.Add(button10);
- Controls.Add(button9);
- Controls.Add(button8);
- Controls.Add(button7);
- Controls.Add(button6);
- Controls.Add(button5);
- Controls.Add(button4);
- Controls.Add(button3);
- Controls.Add(button2);
- Controls.Add(button1);
+ ClientSize = new Size(1135, 436);
+ Controls.Add(textBoxTest);
+ Controls.Add(buttonTest);
+ Controls.Add(buttonTransferDataFromPostgresToMongo);
+ Controls.Add(label1);
+ Controls.Add(labelMongoDB);
+ Controls.Add(trackBarDB);
+ Controls.Add(menuStrip1);
+ MainMenuStrip = menuStrip1;
Name = "MainForm";
Text = "MainForm";
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)trackBarDB).EndInit();
ResumeLayout(false);
+ PerformLayout();
}
#endregion
-
- private Button button1;
- private Button button2;
- private Button button3;
- private Button button4;
- private Button button5;
- private Button button6;
- private Button button7;
- private Button button8;
- private Button button9;
- private Button button10;
- private Button button11;
- private Button button12;
- private Button button13;
- private Button button14;
- private Button button15;
- private Button button16;
- private Button button17;
- private Button button18;
- private Button button19;
- private Button button20;
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem сущностиToolStripMenuItem;
+ private ToolStripMenuItem albumToolStripMenuItem;
+ private ToolStripMenuItem locationToolStripMenuItem;
+ private ToolStripMenuItem authorToolStripMenuItem;
+ private ToolStripMenuItem photoToolStripMenuItem;
+ private ToolStripMenuItem commentToolStripMenuItem;
+ private TrackBar trackBarDB;
+ private Label labelMongoDB;
+ private Label label1;
+ private Button buttonTransferDataFromPostgresToMongo;
+ private Button buttonTest;
+ private TextBox textBoxTest;
}
}
\ No newline at end of file
diff --git a/SUBD_LABA/View/MainForm.cs b/SUBD_LABA/View/MainForm.cs
index 33c6a52..9875096 100644
--- a/SUBD_LABA/View/MainForm.cs
+++ b/SUBD_LABA/View/MainForm.cs
@@ -10,299 +10,162 @@ using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using static System.Windows.Forms.DataFormats;
namespace View
{
public partial class MainForm : Form
{
- private readonly Abstracts db;
- public MainForm(Abstracts abstracts)
+ public MainForm()
{
InitializeComponent();
- db = abstracts;
}
- private void button1_Click(object sender, EventArgs e)
+ private void albumToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormAlbums));
if (service is FormAlbums form)
{
- form.Show();
+ form.ShowDialog();
}
}
- private void button2_Click(object sender, EventArgs e)
+
+ private void locationToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormLocations));
if (service is FormLocations form)
{
- form.Show();
+ form.ShowDialog();
}
}
- private void button3_Click(object sender, EventArgs e)
+
+ private void authorToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormAuthors));
if (service is FormAuthors form)
{
- form.Show();
+ form.ShowDialog();
}
}
- private void button4_Click(object sender, EventArgs e)
+
+ private void photoToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormPhotos));
if (service is FormPhotos form)
{
- form.Show();
+ form.ShowDialog();
}
}
- private void button5_Click(object sender, EventArgs e)
+
+ private void commentToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormComments));
if (service is FormComments form)
{
- form.Show();
+ form.ShowDialog();
}
}
- private void button6_Click(object sender, EventArgs e)
+ private void buttonTest_Click(object sender, EventArgs e)
{
- string Title = "Шикарный альбом";
- string Description = "Тут даже нечего сказать";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
+ var photo = new Photo()
{
- db.CreateAlbum(new()
- {
- Title = $"{Title}{i}",
- Description = $"{Description}{i}"
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ Id = 0,
+ Title = "photo",
+ Description = "cool photo",
+ Privacy = "public",
+ UploadDate = DateTime.Now,
+ ImagePath = "Image/312",
+ AlbumId = 1,
+ LocationId = 1,
+ AuthorId = 1,
+ };
+ ImplementsPostgres bd = new();
+ DateTime startTime = DateTime.Now;
+ bd.DeletePhoto(40);
+ bd.DeletePhoto(41);
+ bd.DeletePhoto(42);
+ bd.DeletePhoto(43);
+ bd.DeletePhoto(44);
+ DateTime endTime = DateTime.Now;
+
+ // Выводим время выполнения запроса в консоль
+ textBoxTest.Text = $"Время выполнения запроса в постгресе: {(endTime - startTime).TotalMilliseconds} миллисекунд ";
+
+ ImplementsMongoDB bdMongodb = new();
+
+ startTime = DateTime.Now;
+ bdMongodb.DeletePhoto(40);
+ bdMongodb.DeletePhoto(41);
+ bdMongodb.DeletePhoto(42);
+ bdMongodb.DeletePhoto(43);
+ bdMongodb.DeletePhoto(44);
+ endTime = DateTime.Now;
+
+ textBoxTest.Text += $"Время выполнения запроса в монгоДб: {(endTime - startTime).TotalMilliseconds} миллисекунд";
}
- private void button7_Click(object sender, EventArgs e)
+
+ private void trackBarDB_MouseUp(object sender, MouseEventArgs e)
{
- string Name = "Москва, Россия";
- string ShortName = "RUS";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
+ if (trackBarDB.Value > 50)
{
- db.CreateLocation(new()
- {
- Name = $"{Name}{i}",
- ShortName = $"{ShortName}{i}"
- });
+ trackBarDB.Value = 100;
+ Program.ChangeDB(false);
}
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button8_Click(object sender, EventArgs e)
- {
- string Name = "Эрик Житель";
- string PhoneNum = "+79999999999";
- string Email = "laba@mail.ru";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
+ else
{
- db.CreateAuthor(new()
- {
- Name = $"{Name}{i}",
- PhoneNum = $"{PhoneNum}{i}",
- Email = $"{Email}{i}"
- });
+ trackBarDB.Value = 0;
+ Program.ChangeDB(true);
}
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
- private void button9_Click(object sender, EventArgs e)
+
+ private void buttonTransferDataFromPostgresToMongo_Click(object sender, EventArgs e)
{
- string Title = "image";
- string Description = "photo";
- string Privacy = "Общий доступ";
- DateTime UploadData = DateTime.Now;
- string ImagePath = "Image/Ch8cfe8vfevb";
- Album albumId = db.GetAlbum("Шикарный альбом0");
- Location locationId = db.GetLocation("Москва, Россия0");
- Author authorId = db.GetAuthor("Эрик Житель0");
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.CreatePhoto(new()
- {
- Title = $"{Title}{i}",
- Description = $"{Description}{i}",
- Privacy = $"{Privacy}{i}",
- UploadDate = UploadData,
- ImagePath = $"{ImagePath}{i}",
- AlbumId = albumId.Id + i,
- LocationId = locationId.Id + i,
- AuthorId = authorId.Id + i
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button10_Click(object sender, EventArgs e)
- {
- DateTime PostDate = DateTime.Now;
- string Content = "Вай, как круто!";
- Album albumId = db.GetAlbum("Шикарный альбом0");
- Location locationId = db.GetLocation("Москва, Россия0");
- Author authorId = db.GetAuthor("Эрик Житель0");
- Photo photoId = db.GetPhoto(albumId.Id, locationId.Id, authorId.Id);
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.CreateComment(new()
- {
- PostDate = PostDate,
- Content = $"{Content}{i}",
- PhotoId = photoId.Id + i
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button11_Click(object sender, EventArgs e)
- {
- Album AlbumId = db.GetAlbum("Шикарный альбом0");
- string Title = "Шикарный альбом1";
- string Description = "Тут даже нечего сказать опять";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.UpdateAlbum(new()
- {
- Id = AlbumId.Id + i,
- Title = $"{Title}{i}",
- Description = $"{Description}{i}"
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button12_Click(object sender, EventArgs e)
- {
- Location locationId = db.GetLocation("Москва, Россия0");
- string Name = "Рим, Италия";
- string ShortName = "ITA";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.UpdateLocation(new()
- {
- Id = locationId.Id + i,
- Name = $"{Name}{i}",
- ShortName = $"{ShortName}{i}"
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button13_Click(object sender, EventArgs e)
- {
- Author authorId = db.GetAuthor("Эрик Житель0");
- string Name = "Chel";
- string PhoneNum = "+79991112233";
- string Email = "laba4@mail.ru";
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.UpdateAuthor(new()
- {
- Id = authorId.Id + i,
- Name = $"{Name}{i}",
- PhoneNum = $"{PhoneNum}{i}",
- Email = $"{Email}{i}"
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button14_Click(object sender, EventArgs e)
- {
- string Title = "image";
- string Description = "photo";
- string Privacy = "Общий доступ";
- DateTime UploadData = DateTime.Now;
- string ImagePath = "Image/sndbkKSB23842KJH";
- Album albumId = db.GetAlbum("Шикарный альбом0");
- Location locationId = db.GetLocation("Москва, Россия0");
- Author authorId = db.GetAuthor("Эрик Житель0");
- Photo photo = db.GetPhoto(albumId.Id, locationId.Id, authorId.Id);
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.UpdatePhoto(new()
- {
- Id = photo.Id + i,
- Title = $"{Title}{i}",
- Description = $"{Description}{i}",
- Privacy = $"{Privacy}{i}",
- UploadDate = UploadData,
- ImagePath = $"{ImagePath}{i}",
- AlbumId = albumId.Id + i,
- LocationId = locationId.Id + i,
- AuthorId = authorId.Id + i
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button15_Click(object sender, EventArgs e)
- {
- DateTime PostDate = DateTime.Now;
- string Content = "О боже мой!";
- Album albumId = db.GetAlbum("Шикарный альбом0");
- Location locationId = db.GetLocation("Москва, Россия0");
- Author authorId = db.GetAuthor("Эрик Житель0");
- Photo photo = db.GetPhoto(albumId.Id, locationId.Id, authorId.Id);
- Comment comment = db.GetComment(photo.Id);
- DateTime start = DateTime.Now;
- for (int i = 0; i < 1000; i++)
- {
- db.UpdateComment(new()
- {
- Id = comment.Id + i,
- PostDate = PostDate,
- Content = $"{Content}{i}",
- PhotoId = photo.Id + i
- });
- }
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button16_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now;
- db.DeleteAllAlbums();
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button17_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now;
- db.DeleteAllLocations();
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button18_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now;
- db.DeleteAllAuthors();
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button19_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now;
- db.DeleteAllPhotos();
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- private void button20_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now;
- db.DeleteAllComments();
- DateTime end = DateTime.Now;
- MessageBox.Show((end - start).Milliseconds.ToString(), "Время работы", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ ImplementsMongoDB implementsMongoDB = new();
+
+ // очищаем всё
+ foreach (var it in implementsMongoDB.GetAlbums())
+ implementsMongoDB.DeleteAlbum(it.Id);
+ foreach (var it in implementsMongoDB.GetLocations())
+ implementsMongoDB.DeleteLocation(it.Id);
+ foreach (var it in implementsMongoDB.GetAuthors())
+ implementsMongoDB.DeleteAuthor(it.Id);
+ foreach (var it in implementsMongoDB.GetPhotos())
+ implementsMongoDB.DeletePhoto(it.Id);
+ foreach (var it in implementsMongoDB.GetComments())
+ implementsMongoDB.DeleteComment(it.Id);
+
+ ImplementsPostgres implementsPostgres = new();
+
+ // скачиваем из постгреса
+ var listAlbums = implementsPostgres.GetAlbums();
+ var listLocations = implementsPostgres.GetLocations();
+ var listAuthors = implementsPostgres.GetAuthors();
+ var listPhotos = implementsPostgres.GetPhotos();
+ var listComments = implementsPostgres.GetComments();
+
+ // вливаем данные монго дб
+ foreach (var it in listAlbums)
+ implementsMongoDB.CreateAlbum(it);
+ foreach (var it in listLocations)
+ implementsMongoDB.CreateLocation(it);
+ foreach (var it in listAuthors)
+ implementsMongoDB.CreateAuthor(it);
+ foreach (var it in listPhotos)
+ implementsMongoDB.CreatePhoto(it);
+ foreach (var it in listComments)
+ implementsMongoDB.CreateComment(it);
+
+ // забираем информацию о последовательностях
+ var listSequence = implementsPostgres.GetSequences();
+ foreach (var it in listSequence)
+ if (it.Id == "Album" ||
+ it.Id == "Location" ||
+ it.Id == "Author" ||
+ it.Id == "Photo" ||
+ it.Id == "Comment"
+ )
+ implementsMongoDB.UpdateSequence(it);
+ else
+ throw new Exception("неправильнй id последовательности");
}
}
}
diff --git a/SUBD_LABA/View/MainForm.resx b/SUBD_LABA/View/MainForm.resx
index a395bff..5203d24 100644
--- a/SUBD_LABA/View/MainForm.resx
+++ b/SUBD_LABA/View/MainForm.resx
@@ -117,4 +117,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
\ No newline at end of file
diff --git a/SUBD_LABA/View/Program.cs b/SUBD_LABA/View/Program.cs
index 5456aa4..eaec3af 100644
--- a/SUBD_LABA/View/Program.cs
+++ b/SUBD_LABA/View/Program.cs
@@ -3,6 +3,7 @@ using Database;
using System;
using Commentbase;
using Microsoft.VisualBasic;
+using static System.Windows.Forms.DataFormats;
namespace View
{
@@ -20,9 +21,17 @@ namespace View
Application.Run(_serviceProvider.GetRequiredService());
}
+ private static bool isPostgreSQL = true;
private static void ConfigureServices(ServiceCollection services)
{
- services.AddTransient();
+ if (isPostgreSQL)
+ {
+ services.AddTransient();
+ }
+ else
+ {
+ services.AddTransient();
+ }
services.AddTransient();
services.AddTransient();
services.AddTransient();
@@ -35,5 +44,21 @@ namespace View
services.AddTransient();
services.AddTransient();
}
+ public static void ChangeDB()
+ {
+ isPostgreSQL = !isPostgreSQL;
+ var services = new ServiceCollection();
+ ConfigureServices(services);
+ _serviceProvider = services.BuildServiceProvider();
+ }
+ public static void ChangeDB(bool newIsPostrgeSQL)
+ {
+ if (newIsPostrgeSQL == isPostgreSQL)
+ return;
+ isPostgreSQL = newIsPostrgeSQL;
+ var services = new ServiceCollection();
+ ConfigureServices(services);
+ _serviceProvider = services.BuildServiceProvider();
+ }
}
}
\ No newline at end of file