public void Upgrade(IDotEntityTransaction transaction) { Db.CreateTable <EntityRole>(transaction); Db.AddColumn <Product, bool>(nameof(Product.RestrictedToRoles), false, transaction); Db.CreateTable <ConnectedAccount>(transaction); Db.CreateConstraint(Relation.Create <User, ConnectedAccount>("Id", "UserId"), transaction, true); }
public void Upgrade(IDotEntityTransaction transaction) { Db.CreateTable <StoreCredit>(transaction); Db.CreateConstraint(Relation.Create <User, StoreCredit>("Id", "UserId"), transaction, true); Db.AddColumn <User, bool>(nameof(User.IsAffiliate), true, transaction); Db.AddColumn <User, bool>(nameof(User.AffiliateActive), true, transaction); Db.AddColumn <User, DateTime?>(nameof(User.AffiliateFirstActivationDate), DateTime.UtcNow, transaction); Db.AddColumn <User, DateTime?>(nameof(User.FirstActivationDate), DateTime.UtcNow, transaction); Db.AddColumn <Order, bool>(nameof(Order.UsedStoreCredits), false, transaction); Db.AddColumn <Order, decimal>(nameof(Order.StoreCredits), 0, transaction); Db.AddColumn <Order, decimal>(nameof(Order.StoreCreditAmount), 0, transaction); Db.AddColumn <Cart, bool>(nameof(Cart.UseStoreCredits), false, transaction); }
public void Upgrade(IDotEntityTransaction transaction) { Db.CreateTable <EntityTag>(transaction); //execute the following only if it's not a fresh install if (transaction.CurrentlyRanVersions.All(x => x.GetType() != typeof(Version1))) { Db.AddColumn <MenuItem, bool>(nameof(MenuItem.OpenInNewWindow), false, transaction); var parentCategoryIdCol = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentCategoryId)); var parentIdCol = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentId)); var categoryTable = DotEntityDb.GetTableNameForType <Category>(); Db.AddColumn <Category, int>(nameof(Category.ParentId), 0, transaction); Db.Query($"UPDATE {categoryTable} SET {parentIdCol}={parentCategoryIdCol}", null, transaction); Db.DropColumn <Category>(nameof(Category.ParentCategoryId), transaction); Db.AddColumn <ContentPage, int>(nameof(ContentPage.ParentId), 0, transaction); } }
public void Upgrade(IDotEntityTransaction transaction) { Db.AddColumn <OrderFulfillment, bool>(nameof(OrderFulfillment.Locked), true, transaction); #region MultiStore and Catalog Db.CreateTable <Store>(transaction); Db.CreateTable <Catalog>(transaction); Db.CreateTable <EntityStore>(transaction); Db.CreateTable <ProductCatalog>(transaction); Db.CreateTable <CatalogCountry>(transaction); Db.CreateConstraint(Relation.Create <Store, EntityStore>("Id", "StoreId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductCatalog>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Catalog, ProductCatalog>("Id", "CatalogId"), transaction, true); //run following only if it's not a fresh install if (transaction.CurrentlyRanVersions.All(x => x.GetType() != typeof(Version1))) { //add a default store var store = new Store() { Name = "Primary Store", Live = true }; EntitySet <Store> .Insert(store, transaction); var storeId = 1; //this will be the store id for new store //next create a default catalog var catalog = new Catalog() { Name = "Primary Catalog", IsCountrySpecific = false }; EntitySet <Catalog> .Insert(catalog, transaction); EntitySet <EntityStore> .Insert(new EntityStore() { EntityId = 1, StoreId = 1, EntityName = nameof(Catalog) }, transaction); Db.AddColumn <Setting, int>(nameof(Setting.StoreId), storeId, transaction); Db.AddColumn <Order, int>(nameof(Order.StoreId), storeId, transaction); //assign all products to this catalog var productTableName = DotEntityDb.Provider.SafeEnclose(DotEntityDb.GetTableNameForType <Product>()); var productCatalogTableName = DotEntityDb.Provider.SafeEnclose(DotEntityDb.GetTableNameForType <ProductCatalog>()); var productIdCol = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.ProductId)); var catalogIdCol = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.CatalogId)); var idCol = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.Id)); var query = $"INSERT INTO {productCatalogTableName}({productIdCol}, {catalogIdCol}) SELECT {idCol}, 1 FROM {productTableName}"; Db.Query(query, null, transaction); //update active status of plugins var pluginSetting = EntitySet <Setting> .Where(x => x.GroupName == nameof(PluginSettings) && x.Key == nameof(PluginSettings.SitePlugins)).Select().FirstOrDefault(); if (pluginSetting != null) { var pluginStatuses = JsonConvert.DeserializeObject <IList <PluginStatus> >(pluginSetting.Value); foreach (var pluginStatus in pluginStatuses) { pluginStatus.ActiveStoreIds = pluginStatus.Active ? new List <int> { store.Id } : new List <int>(); } pluginSetting.Value = JsonConvert.SerializeObject(pluginStatuses); EntitySet <Setting> .Update(pluginSetting, transaction); } //update widgets pluginSetting = EntitySet <Setting> .Where(x => x.GroupName == nameof(PluginSettings) && x.Key == nameof(PluginSettings.SiteWidgets)).Select().FirstOrDefault(); if (pluginSetting != null) { var widgetStatuses = JsonConvert.DeserializeObject <IList <WidgetStatus> >(pluginSetting.Value); foreach (var ws in widgetStatuses) { ws.StoreId = storeId; } pluginSetting.Value = JsonConvert.SerializeObject(widgetStatuses); EntitySet <Setting> .Update(pluginSetting, transaction); } //update store ids to 0 for plugin settings as it is now global from this version EntitySet <Setting> .Update(new { storeId = 0 }, x => x.GroupName == nameof(PluginSettings), transaction); //update menus MoveEntityToStore <Menu>(storeId, transaction); //update content pages MoveEntityToStore <ContentPage>(storeId, transaction); } #endregion }
public void Upgrade(IDotEntityTransaction transaction) { //user Db.CreateTable <User>(transaction); Db.CreateTable <Role>(transaction); Db.CreateTable <Capability>(transaction); Db.CreateTable <UserRole>(transaction); Db.CreateTable <RoleCapability>(transaction); Db.CreateTable <UserCapability>(transaction); Db.CreateTable <Vendor>(transaction); Db.CreateTable <VendorUser>(transaction); Db.CreateTable <Address>(transaction); Db.CreateTable <Country>(transaction); Db.CreateTable <StateOrProvince>(transaction); Db.CreateTable <InviteRequest>(transaction); Db.CreateTable <UserPoint>(transaction); Db.CreateTable <Notification>(transaction); Db.CreateTable <NotificationEvent>(transaction); Db.CreateConstraint(Relation.Create <User, UserRole>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <Role, UserRole>("Id", "RoleId"), transaction, true); Db.CreateConstraint(Relation.Create <Role, RoleCapability>("Id", "RoleId"), transaction, true); Db.CreateConstraint(Relation.Create <Capability, RoleCapability>("Id", "CapabilityId"), transaction, true); Db.CreateConstraint(Relation.Create <Capability, UserCapability>("Id", "CapabilityId"), transaction, true); Db.CreateConstraint(Relation.Create <User, UserCapability>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <User, VendorUser>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <Vendor, VendorUser>("Id", "VendorId"), transaction, true); Db.CreateConstraint(Relation.Create <Country, Address>("Id", "CountryId"), transaction, true); Db.CreateConstraint(Relation.Create <User, UserPoint>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <User, Notification>("Id", "UserId"), transaction); //shop Db.CreateTable <Product>(transaction); Db.CreateTable <Category>(transaction); Db.CreateTable <ProductCategory>(transaction); Db.CreateTable <AvailableAttribute>(transaction); Db.CreateTable <AvailableAttributeValue>(transaction); Db.CreateTable <ProductAttribute>(transaction); Db.CreateTable <ProductAttributeValue>(transaction); Db.CreateTable <Manufacturer>(transaction); Db.CreateTable <ProductVendor>(transaction); Db.CreateTable <ProductVariant>(transaction); Db.CreateTable <ProductVariantAttribute>(transaction); Db.CreateTable <Media>(transaction); Db.CreateTable <ProductMedia>(transaction); Db.CreateTable <Review>(transaction); Db.CreateTable <ProductSpecificationGroup>(transaction); Db.CreateTable <ProductSpecification>(transaction); Db.CreateTable <ProductSpecificationValue>(transaction); Db.CreateTable <ProductRelation>(transaction); Db.CreateTable <Download>(transaction); Db.CreateTable <ItemDownload>(transaction); //cart Db.CreateTable <Cart>(transaction); Db.CreateTable <CartItem>(transaction); Db.CreateTable <Order>(transaction); Db.CreateTable <OrderItem>(transaction); Db.CreateTable <OrderFulfillment>(transaction); Db.CreateTable <Shipment>(transaction); Db.CreateTable <ShipmentItem>(transaction); Db.CreateTable <ShipmentHistory>(transaction); Db.CreateTable <PaymentTransaction>(transaction); Db.CreateTable <ReturnRequest>(transaction); Db.CreateConstraint(Relation.Create <Product, ProductCategory>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Category, ProductCategory>("Id", "CategoryId"), transaction, true); Db.CreateConstraint(Relation.Create <AvailableAttribute, AvailableAttributeValue>("Id", "AvailableAttributeId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductAttribute>("Id", "ProductId"), transaction); Db.CreateConstraint(Relation.Create <AvailableAttribute, ProductAttribute>("Id", "AvailableAttributeId"), transaction, true); Db.CreateConstraint(Relation.Create <AvailableAttributeValue, ProductAttributeValue>("Id", "AvailableAttributeValueId"), transaction); Db.CreateConstraint(Relation.Create <ProductAttribute, ProductAttributeValue>("Id", "ProductAttributeId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductVendor>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Vendor, ProductVendor>("Id", "VendorId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductVariant>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <ProductVariant, ProductVariantAttribute>("Id", "ProductVariantId"), transaction, true); Db.CreateConstraint(Relation.Create <ProductAttribute, ProductVariantAttribute>("Id", "ProductAttributeId"), transaction, true); Db.CreateConstraint(Relation.Create <ProductAttributeValue, ProductVariantAttribute>("Id", "ProductAttributeValueId"), transaction); Db.CreateConstraint(Relation.Create <Media, ProductMedia>("Id", "MediaId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductMedia>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <User, Review>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, Review>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Order, Review>("Id", "OrderId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductSpecificationGroup>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductSpecification>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <ProductSpecification, ProductSpecificationValue>("Id", "ProductSpecificationId"), transaction, true); Db.CreateConstraint(Relation.Create <AvailableAttribute, ProductSpecification>("Id", "AvailableAttributeId"), transaction, true); Db.CreateConstraint(Relation.Create <AvailableAttributeValue, ProductSpecificationValue>("Id", "AvailableAttributeValueId"), transaction); Db.CreateConstraint(Relation.Create <Product, ProductRelation>("Id", "SourceProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, ProductRelation>("Id", "DestinationProductId"), transaction, false); Db.CreateConstraint(Relation.Create <Product, Download>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Download, ItemDownload>("Id", "DownloadId"), transaction, true); Db.CreateTable <DiscountCoupon>(transaction); Db.CreateTable <RestrictionValue>(transaction); Db.CreateConstraint(Relation.Create <DiscountCoupon, RestrictionValue>("Id", "DiscountCouponId"), transaction, true); //tax Db.CreateTable <Tax>(transaction); Db.CreateTable <TaxRate>(transaction); Db.CreateConstraint(Relation.Create <Tax, TaxRate>("Id", "TaxId"), transaction, true); //content Db.CreateTable <ContentPage>(transaction); Db.CreateConstraint(Relation.Create <User, ContentPage>("Id", "UserId"), transaction, true); //emails Db.CreateTable <EmailAccount>(transaction); Db.CreateTable <EmailTemplate>(transaction); Db.CreateTable <EmailMessage>(transaction); Db.CreateConstraint(Relation.Create <EmailAccount, EmailTemplate>("Id", "EmailAccountId"), transaction, false); Db.CreateConstraint(Relation.Create <Cart, CartItem>("Id", "CartId"), transaction, true); Db.CreateConstraint(Relation.Create <User, Cart>("Id", "UserId"), transaction, true); Db.CreateConstraint(Relation.Create <Order, OrderItem>("Id", "OrderId"), transaction, true); Db.CreateConstraint(Relation.Create <User, Order>("Id", "UserId"), transaction, false); Db.CreateConstraint(Relation.Create <Product, CartItem>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Product, OrderItem>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Shipment, ShipmentItem>("Id", "ShipmentId"), transaction, true); Db.CreateConstraint(Relation.Create <Shipment, ShipmentHistory>("Id", "ShipmentId"), transaction, true); Db.CreateConstraint(Relation.Create <Order, OrderFulfillment>("Id", "OrderId"), transaction, true); //menus Db.CreateTable <Menu>(transaction); Db.CreateTable <MenuItem>(transaction); Db.CreateConstraint(Relation.Create <Menu, MenuItem>("Id", "MenuId"), transaction, true); //old password and active codes Db.CreateTable <PreviousPassword>(transaction); Db.CreateTable <UserCode>(transaction); Db.CreateConstraint(Relation.Create <User, PreviousPassword>("Id", "UserId"), transaction, true); Db.CreateTable <Currency>(transaction); //gdpr Db.CreateTable <Consent>(transaction); Db.CreateTable <ConsentLog>(transaction); Db.CreateTable <UserConsent>(transaction); Db.CreateTable <ConsentGroup>(transaction); Db.CreateConstraint(Relation.Create <Consent, ConsentLog>("Id", "ConsentId"), transaction, true); Db.CreateConstraint(Relation.Create <Consent, UserConsent>("Id", "ConsentId"), transaction, true); Db.CreateConstraint(Relation.Create <User, UserConsent>("Id", "UserId"), transaction, true); //warehouses Db.CreateTable <Warehouse>(transaction); Db.CreateTable <WarehouseInventory>(transaction); Db.CreateConstraint(Relation.Create <Product, WarehouseInventory>("Id", "ProductId"), transaction, true); Db.CreateConstraint(Relation.Create <Warehouse, WarehouseInventory>("Id", "WarehouseId"), transaction, true); //Db.CreateConstraint(Relation.Create<ProductVariant, WarehouseInventory>("Id", "ProductVariantId"), transaction, false); Db.CreateConstraint(Relation.Create <Address, Warehouse>("Id", "AddressId"), transaction, true); //settings, logs, and others Db.CreateTable <Setting>(transaction); Db.CreateTable <Log>(transaction); Db.CreateTable <SeoMeta>(transaction); Db.CreateTable <ScheduledTask>(transaction); Db.CreateTable <CustomLabel>(transaction); Db.CreateTable <EntityProperty>(transaction); Db.CreateTable <Subscription>(transaction); Db.CreateTable <Upload>(transaction); Db.CreateConstraint(Relation.Create <User, Upload>("Id", "UserId"), transaction, true); }
public void Upgrade(IDotEntityTransaction transaction) { Db.CreateTable <SearchTerm>(transaction); }
public void Upgrade(IDotEntityTransaction transaction) { Db.CreateTable <UiSlider>(transaction); Db.CreateConstraint(Relation.Create <Media, UiSlider>("Id", "MediaId"), transaction, true); }