diff --git a/server/DAL/Item.cs b/server/DAL/Item.cs index ea816f9..5c80ead 100644 --- a/server/DAL/Item.cs +++ b/server/DAL/Item.cs @@ -1,13 +1,27 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SockScape.DAL { class Item { - public ulong Id { get; set; } + public long Id { get; set; } + [ForeignKey("Master"), Required] + public int MasterId { get; set; } + public virtual ItemMaster Master { get; set; } + [ForeignKey("User"), Required] + public long UserId { get; set; } + public virtual User User { get; set; } + + [Required] + public long Quantity { get; set; } + + [Required] + public long Sequence { get; set; } } } diff --git a/server/DAL/ItemMaster.cs b/server/DAL/ItemMaster.cs index 357220b..bce0243 100644 --- a/server/DAL/ItemMaster.cs +++ b/server/DAL/ItemMaster.cs @@ -19,16 +19,16 @@ namespace SockScape.DAL { [Required, DefaultValue(false)] public bool Stackable { get; set; } [Required, DefaultValue(UInt32.MaxValue)] - public uint MaxStack { get; set; } + public long MaxStack { get; set; } [Required, DefaultValue(true)] public bool Droppable { get; set; } [Required, MaxLength(64)] public string Sheet { get; set; } [Required] - public ushort Row { get; set; } + public int Row { get; set; } [Required] - public ushort Column { get; set; } + public int Column { get; set; } [MaxLength(64)] public string Object { get; set; } diff --git a/server/DAL/Origin.cs b/server/DAL/Origin.cs index 0e898b3..328f0b6 100644 --- a/server/DAL/Origin.cs +++ b/server/DAL/Origin.cs @@ -16,8 +16,7 @@ namespace SockScape.DAL { public long UserId { get; set; } public virtual User User { get; set; } - [Index("IX_RawIp_UserId_Unique", 2, IsUnique = true)] - [MaxLength(16), Required] + [Required, Index("IX_RawIp_UserId_Unique", 2, IsUnique = true)] public byte[] RawIp { get; set; } [NotMapped] diff --git a/server/DAL/ScapeDb.cs b/server/DAL/ScapeDb.cs index b9d475b..de05e89 100644 --- a/server/DAL/ScapeDb.cs +++ b/server/DAL/ScapeDb.cs @@ -36,7 +36,9 @@ namespace SockScape.DAL { protected override void OnModelCreating(DbModelBuilder builder) { base.OnModelCreating(builder); - + + builder.HasDefaultSchema(String.Empty); + builder.Properties() .Configure(s => s.HasMaxLength(256).HasColumnType("varchar")); diff --git a/server/DAL/Session.cs b/server/DAL/Session.cs index f0142e1..c49767e 100644 --- a/server/DAL/Session.cs +++ b/server/DAL/Session.cs @@ -14,9 +14,7 @@ namespace SockScape.DAL { [Required] public virtual User User { get; set; } - [Required] - [Index(IsUnique = true)] - [MaxLength(16), MinLength(16)] + [Required, Index(IsUnique = true)] public byte[] Secret { get; set; } [Required] diff --git a/server/DAL/User.cs b/server/DAL/User.cs index 88ba3f9..7ff418b 100644 --- a/server/DAL/User.cs +++ b/server/DAL/User.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,12 +10,10 @@ namespace SockScape.DAL { public partial class User { public long Id { get; set; } - [Required] - [MaxLength(16)] + [Required, MaxLength(16)] public string Username { get; set; } [Required] - [MaxLength(36), MinLength(36)] public byte[] Password { get; set; } [Required] diff --git a/server/Entrypoint.cs b/server/Entrypoint.cs index d16510d..6ce1e8e 100644 --- a/server/Entrypoint.cs +++ b/server/Entrypoint.cs @@ -15,7 +15,6 @@ using MySql.Data.Entity; namespace SockScape { class Entrypoint { static void Main(string[] args) { - DbConfiguration.SetConfiguration(new MySqlEFConfiguration()); var db = new DAL.ScapeDb(); Dictionary servers diff --git a/server/Migrations/201708231959530_Initial.cs b/server/Migrations/201708231959530_Initial.cs deleted file mode 100644 index d1ced26..0000000 --- a/server/Migrations/201708231959530_Initial.cs +++ /dev/null @@ -1,61 +0,0 @@ -namespace SockScape.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Initial : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.Origins", - c => new - { - Id = c.Long(nullable: false, identity: true), - UserId = c.Long(nullable: false), - RawIp = c.Binary(nullable: false, storeType: "binary(16)"), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Users", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.UserId, t.RawIp }, unique: true, name: "IX_RawIp_UserId_Unique"); - - CreateTable( - "dbo.Users", - c => new - { - Id = c.Long(nullable: false, identity: true), - Username = c.String(nullable: false, maxLength: 16, storeType: "varchar"), - Password = c.Binary(nullable: false, storeType: "binary(36)"), - Joined = c.DateTime(nullable: false, precision: 0), - LastLogin = c.DateTime(precision: 0), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.Sessions", - c => new - { - Id = c.Long(nullable: false), - Secret = c.Binary(nullable: false, storeType: "binary(16)"), - ServerId = c.Int(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Users", t => t.Id) - .Index(t => t.Id) - .Index(t => t.Secret, unique: true); - - } - - public override void Down() - { - DropForeignKey("dbo.Origins", "UserId", "dbo.Users"); - DropForeignKey("dbo.Sessions", "Id", "dbo.Users"); - DropIndex("dbo.Sessions", new[] { "Secret" }); - DropIndex("dbo.Sessions", new[] { "Id" }); - DropIndex("dbo.Origins", "IX_RawIp_UserId_Unique"); - DropTable("dbo.Sessions"); - DropTable("dbo.Users"); - DropTable("dbo.Origins"); - } - } -} diff --git a/server/Migrations/201708231959530_Initial.Designer.cs b/server/Migrations/201708251600325_Initial.Designer.cs similarity index 93% rename from server/Migrations/201708231959530_Initial.Designer.cs rename to server/Migrations/201708251600325_Initial.Designer.cs index b600a13..fb1d6b1 100644 --- a/server/Migrations/201708231959530_Initial.Designer.cs +++ b/server/Migrations/201708251600325_Initial.Designer.cs @@ -13,7 +13,7 @@ namespace SockScape.Migrations string IMigrationMetadata.Id { - get { return "201708231959530_Initial"; } + get { return "201708251600325_Initial"; } } string IMigrationMetadata.Source diff --git a/server/Migrations/201708251600325_Initial.cs b/server/Migrations/201708251600325_Initial.cs new file mode 100644 index 0000000..1287234 --- /dev/null +++ b/server/Migrations/201708251600325_Initial.cs @@ -0,0 +1,100 @@ +namespace SockScape.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class Initial : DbMigration + { + public override void Up() + { + CreateTable( + "ItemMaster", + c => new + { + Id = c.Int(nullable: false, identity: true), + Name = c.String(nullable: false, maxLength: 64, unicode: false), + Description = c.String(nullable: false, maxLength: 256, unicode: false), + Stackable = c.Boolean(nullable: false), + MaxStack = c.Long(nullable: false), + Droppable = c.Boolean(nullable: false), + Sheet = c.String(nullable: false, maxLength: 64, unicode: false), + Row = c.Int(nullable: false), + Column = c.Int(nullable: false), + Object = c.String(maxLength: 64, unicode: false), + }) + .PrimaryKey(t => t.Id); + + CreateTable( + "Items", + c => new + { + Id = c.Long(nullable: false, identity: true), + MasterId = c.Int(nullable: false), + UserId = c.Long(nullable: false), + Quantity = c.Long(nullable: false), + Sequence = c.Long(nullable: false), + }) + .PrimaryKey(t => t.Id) + .ForeignKey("ItemMaster", t => t.MasterId, cascadeDelete: true) + .ForeignKey("Users", t => t.UserId, cascadeDelete: true) + .Index(t => t.MasterId) + .Index(t => t.UserId); + + CreateTable( + "Users", + c => new + { + Id = c.Long(nullable: false, identity: true), + Username = c.String(nullable: false, maxLength: 16, unicode: false), + Password = c.Binary(nullable: false, storeType: "binary(36)"), + Joined = c.DateTime(nullable: false, precision: 0), + LastLogin = c.DateTime(precision: 0), + }) + .PrimaryKey(t => t.Id); + + CreateTable( + "Origins", + c => new + { + Id = c.Long(nullable: false, identity: true), + UserId = c.Long(nullable: false), + RawIp = c.Binary(nullable: false, storeType: "binary(16)"), + }) + .PrimaryKey(t => t.Id) + .ForeignKey("Users", t => t.UserId, cascadeDelete: true) + .Index(t => new { t.UserId, t.RawIp }, unique: true, name: "IX_RawIp_UserId_Unique"); + + CreateTable( + "Sessions", + c => new + { + Id = c.Long(nullable: false), + Secret = c.Binary(nullable: false, storeType: "binary(16)"), + ServerId = c.Int(nullable: false), + }) + .PrimaryKey(t => t.Id) + .ForeignKey("Users", t => t.Id) + .Index(t => t.Id) + .Index(t => t.Secret, unique: true); + + } + + public override void Down() + { + DropForeignKey("Items", "UserId", "Users"); + DropForeignKey("Sessions", "Id", "Users"); + DropForeignKey("Origins", "UserId", "Users"); + DropForeignKey("Items", "MasterId", "ItemMaster"); + DropIndex("Sessions", new[] { "Secret" }); + DropIndex("Sessions", new[] { "Id" }); + DropIndex("Origins", "IX_RawIp_UserId_Unique"); + DropIndex("Items", new[] { "UserId" }); + DropIndex("Items", new[] { "MasterId" }); + DropTable("Sessions"); + DropTable("Origins"); + DropTable("Users"); + DropTable("Items"); + DropTable("ItemMaster"); + } + } +} diff --git a/server/Migrations/201708231959530_Initial.resx b/server/Migrations/201708251600325_Initial.resx similarity index 64% rename from server/Migrations/201708231959530_Initial.resx rename to server/Migrations/201708251600325_Initial.resx index cc9fa16..710c1eb 100644 --- a/server/Migrations/201708231959530_Initial.resx +++ b/server/Migrations/201708251600325_Initial.resx @@ -118,9 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 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 - dbo + \ No newline at end of file diff --git a/server/SockScape.csproj b/server/SockScape.csproj index 4b25b52..e400a68 100644 --- a/server/SockScape.csproj +++ b/server/SockScape.csproj @@ -96,9 +96,9 @@ - - - 201708231959530_Initial.cs + + + 201708251600325_Initial.cs @@ -163,8 +163,8 @@ - - 201708231959530_Initial.cs + + 201708251600325_Initial.cs