diff --git a/app/model/productDescription.go b/app/model/productDescription.go index 4781be5..985b819 100644 --- a/app/model/productDescription.go +++ b/app/model/productDescription.go @@ -18,9 +18,10 @@ type ProductDescription struct { AvailableLater string `gorm:"column:available_later;type:varchar(255)" json:"available_later" form:"available_later"` DeliveryInStock string `gorm:"column:delivery_in_stock;type:varchar(255)" json:"delivery_in_stock" form:"delivery_in_stock"` DeliveryOutStock string `gorm:"column:delivery_out_stock;type:varchar(255)" json:"delivery_out_stock" form:"delivery_out_stock"` - Usage string `gorm:"column:usage;type:text" json:"usage" form:"usage"` + Usage string `gorm:"column:_usage_;type:text" json:"usage" form:"usage"` - ExistsInDatabase bool `gorm:"-" json:"exists_in_database"` + ImageLink string `gorm:"column:image_link" json:"image_link"` + ExistsInDatabase bool `gorm:"-" json:"exists_in_database"` } type ProductRow struct { diff --git a/app/repos/productDescriptionRepo/productDescriptionRepo.go b/app/repos/productDescriptionRepo/productDescriptionRepo.go index 4e42175..391ecb0 100644 --- a/app/repos/productDescriptionRepo/productDescriptionRepo.go +++ b/app/repos/productDescriptionRepo/productDescriptionRepo.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" + "git.ma-al.com/goc_daniel/b2b/app/config" "git.ma-al.com/goc_daniel/b2b/app/db" "git.ma-al.com/goc_daniel/b2b/app/model" "git.ma-al.com/goc_daniel/b2b/app/model/dbmodel" @@ -36,6 +37,27 @@ func (r *ProductDescriptionRepo) GetProductDescription(productID uint, productid IDShop: int32(constdata.SHOP_ID), IDLang: int32(productid_lang), }). + Select(` + `+dbmodel.PsProductLangCols.IDProduct.TabCol()+` AS id_product, + `+dbmodel.PsProductLangCols.IDShop.TabCol()+` AS id_shop, + `+dbmodel.PsProductLangCols.IDLang.TabCol()+` AS id_lang, + `+dbmodel.PsProductLangCols.Description.TabCol()+` AS description, + `+dbmodel.PsProductLangCols.DescriptionShort.TabCol()+` AS description_short, + `+dbmodel.PsProductLangCols.LinkRewrite.TabCol()+` AS link_rewrite, + `+dbmodel.PsProductLangCols.MetaDescription.TabCol()+` AS meta_description, + `+dbmodel.PsProductLangCols.MetaKeywords.TabCol()+` AS meta_keywords, + `+dbmodel.PsProductLangCols.MetaTitle.TabCol()+` AS meta_title, + `+dbmodel.PsProductLangCols.Name.TabCol()+` AS name, + `+dbmodel.PsProductLangCols.AvailableNow.TabCol()+` AS available_now, + `+dbmodel.PsProductLangCols.AvailableLater.TabCol()+` AS available_later, + `+dbmodel.PsProductLangCols.DeliveryInStock.TabCol()+` AS delivery_in_stock, + `+dbmodel.PsProductLangCols.DeliveryOutStock.TabCol()+` AS delivery_out_stock, + `+dbmodel.PsProductLangCols.Usage.TabCol()+` AS _usage_, + CONCAT(?, '/', `+dbmodel.PsImageShopCols.IDImage.TabCol()+`, '-large_default/', `+dbmodel.PsProductLangCols.LinkRewrite.TabCol()+`, '.webp') AS image_link + `, config.Get().Image.ImagePrefix). + Joins("JOIN " + dbmodel.TableNamePsImageShop + + " ON " + dbmodel.PsImageShopCols.IDProduct.TabCol() + "=" + dbmodel.PsProductLangCols.IDProduct.TabCol() + + " AND " + dbmodel.PsImageShopCols.Cover.TabCol() + " = 1"). First(&ProductDescription).Error if errors.Is(err, gorm.ErrRecordNotFound) { diff --git a/bo/components.d.ts b/bo/components.d.ts index f0f9cc4..c9bf5aa 100644 --- a/bo/components.d.ts +++ b/bo/components.d.ts @@ -34,6 +34,7 @@ declare module 'vue' { ProductCustomization: typeof import('./src/components/customer/components/ProductCustomization.vue')['default'] ProductDetailView: typeof import('./src/components/admin/ProductDetailView.vue')['default'] 'ProductDetailView copy': typeof import('./src/components/admin/ProductDetailView copy.vue')['default'] + ProductEditor: typeof import('./src/components/inner/ProductEditor.vue')['default'] ProductVariants: typeof import('./src/components/customer/components/ProductVariants.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] @@ -62,5 +63,6 @@ declare module 'vue' { USidebar: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Sidebar.vue')['default'] UTable: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Table.vue')['default'] UTabs: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue')['default'] + UTextarea: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Textarea.vue')['default'] } } diff --git a/bo/src/app.config.ts b/bo/src/app.config.ts index 7e88496..e0c4961 100644 --- a/bo/src/app.config.ts +++ b/bo/src/app.config.ts @@ -56,6 +56,11 @@ export const uiOptions: NuxtUIOptions = { content: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! bg-(--second-light) dark:bg-(--main-dark)', } + }, + textarea: { + slots: { + base: 'ring-0! outline-0! rounded-md border border-(--border-light)! dark:border-(--border-dark)! text-base!' + } } } } \ No newline at end of file diff --git a/bo/src/assets/main.css b/bo/src/assets/main.css index 3e1c5a6..8041d23 100644 --- a/bo/src/assets/main.css +++ b/bo/src/assets/main.css @@ -5,6 +5,10 @@ body { font-family: "Inter", sans-serif; } +li { + margin-left: 20px +} + .inter { font-family: "Inter", sans-serif; } diff --git a/bo/src/components/admin/PageProducts.vue b/bo/src/components/admin/PageProducts.vue index c6c7efb..c2d4e26 100644 --- a/bo/src/components/admin/PageProducts.vue +++ b/bo/src/components/admin/PageProducts.vue @@ -4,7 +4,7 @@
@@ -153,7 +153,7 @@ async function fetchProductList() { } } -function goToProduct(productId: number) { +function goToProduct(productId: number, linkRewrite: string) { let path = { name: route.name, params: route.params, @@ -162,7 +162,7 @@ function goToProduct(productId: number) { localStorage.setItem('back_from_product', JSON.stringify(path)) router.push({ name: 'customer-product-details', - params: { product_id: productId } + params: { product_id: productId, link_rewrite: linkRewrite } }) } @@ -281,7 +281,7 @@ const columns: TableColumn[] = [ cell: ({ row }) => { return h(UButton, { onClick: () => { - goToProduct(row.original.product_id) + goToProduct(row.original.product_id, row.original.link_rewrite) }, class: 'cursor-pointer', color: 'info', diff --git a/bo/src/components/admin/ProductDetailView.vue b/bo/src/components/admin/ProductDetailView.vue index acd7556..62be34c 100644 --- a/bo/src/components/admin/ProductDetailView.vue +++ b/bo/src/components/admin/ProductDetailView.vue @@ -6,9 +6,8 @@ Back to products

-
-
+
+
@@ -18,7 +17,7 @@ Selected language - {{langs.find(l => l.id === toLangId)?.name || 'Select language'}} + {{ selectedLangName }}
@@ -34,7 +33,8 @@
-
+

Change Text

@@ -45,13 +45,16 @@
- Cancel and back to Polish + Cancel - - Save translations + + Save
@@ -65,62 +68,59 @@
-
-
- Product Image -
-
-
+
+ +
+

- {{ productStore.productDescription.name || 'Product Name' }} + {{ productStore.productDescription.name || 'Product name not provided' }}

Title:

- - - - - +
+
+

Link rewrite:

+ +
+
-

+

Short description:

- - - - - +
-
-
+
+

- {{ productStore.productDescription.available_now || 'Available now' }} + {{ productStore.productDescription.available_now }}

-
+

- {{ productStore.productDescription.delivery_in_stock || 'Delivery information' }} + {{ productStore.productDescription.delivery_in_stock }}

@@ -132,213 +132,49 @@ root: 'items-start!' }">
+
\ No newline at end of file diff --git a/bo/src/layouts/default.vue b/bo/src/layouts/default.vue index 1ccbd9b..18dc7c8 100644 --- a/bo/src/layouts/default.vue +++ b/bo/src/layouts/default.vue @@ -50,7 +50,7 @@
-
+
@@ -168,6 +168,7 @@ const menu = ref(null) async function getTopMenu() { try { const { items } = await useFetchJson('/api/v1/restricted/menu/get-top-menu') + menu.value = items } catch (err) { console.log(err) diff --git a/bo/src/router/langs.ts b/bo/src/router/langs.ts index b39e195..78dee8c 100644 --- a/bo/src/router/langs.ts +++ b/bo/src/router/langs.ts @@ -47,6 +47,9 @@ export async function initCountryCurrency() { } defCountry.value = items.find((x) => x.id === defLang.value?.id) currentCountry.value = idfromcookie ?? defCountry.value + console.log(defCountry.value); + console.log(currentCountry.value); + } catch (error) { console.error('Failed to fetch languages:', error) } diff --git a/bo/src/stores/product.ts b/bo/src/stores/product.ts index b4a4400..ee8408e 100644 --- a/bo/src/stores/product.ts +++ b/bo/src/stores/product.ts @@ -28,6 +28,7 @@ export const useProductStore = defineStore('product', () => { const loading = ref(false) const error = ref(null) const productDescription = ref() + const copyProductDescription = ref() async function getProductDescription(langId: number | null, productID: number) { loading.value = true @@ -36,8 +37,8 @@ export const useProductStore = defineStore('product', () => { const response = await useFetchJson( `/api/v1/restricted/product-translation/get-product-description?productID=${productID}&productLangID=${langId ? langId : settingStore.shopDefaultLanguage}` ) - productDescription.value = response.items - + productDescription.value = structuredClone(response.items) + copyProductDescription.value = structuredClone(response.items) } catch (e: unknown) { error.value = e instanceof Error ? e.message : 'Failed to load product description' } finally { @@ -45,7 +46,6 @@ export const useProductStore = defineStore('product', () => { } } - const translat = ref() const settingStore = useSettingsStore() async function translateProductDescription(productID: number, toLangId: number, model: string = 'Google') { loading.value = true @@ -87,6 +87,8 @@ export const useProductStore = defineStore('product', () => { }) } ) + + await getProductDescription(langId, productID) return data } catch (e) { console.error(e) @@ -97,7 +99,7 @@ export const useProductStore = defineStore('product', () => { productDescription, loading, error, - translat, + copyProductDescription, translateProductDescription, getProductDescription, saveProductDescription diff --git a/bo/src/types/product.d.ts b/bo/src/types/product.d.ts index 3753f73..99cba7b 100644 --- a/bo/src/types/product.d.ts +++ b/bo/src/types/product.d.ts @@ -7,6 +7,8 @@ export interface ProductDescription { available_now: string delivery_in_stock?: string usage: string + image_link: string + link_rewrite: string } export interface Product { diff --git a/i18n/migrations/20260302163100_routes.sql b/i18n/migrations/20260302163100_routes.sql index 1f51f96..07ca0ca 100644 --- a/i18n/migrations/20260302163100_routes.sql +++ b/i18n/migrations/20260302163100_routes.sql @@ -10,35 +10,35 @@ CREATE TABLE IF NOT EXISTS b2b_routes ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -INSERT IGNORE INTO b2b_routes - (name, path, component, meta, active) -VALUES - ('root', '', '', '{"trans": "route.root"}', 0), - ('home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1), - ('login', 'login', '/views/LoginView.vue', '{"guest":true}', 1), - ('register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1), - ('password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1), - ('reset-password', 'reset-password', '/views/ResetPasswordView.vue', '{"guest":true}', 1), - ('verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1); - --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (1, 'root', '', '', '{"trans": "route.root"}', 0); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (2, 'home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (3, 'login', 'login', '/views/LoginView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (4, 'register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (5, 'password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (6, 'reset-password', 'reset-password', '/views/ResetPasswordForm.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (7, 'verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (8, 'category', 'category/:category_id-:link_rewrite', '/views/CategoryView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (9, 'admin-products-category', 'products/:category_id-:link_rewrite', '/components/admin/PageProducts.vue', '{ --- "guest": true --- }', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (10, 'customer-addresses', 'addresses', '/components/customer/PageAddresses.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (11, 'customer-carts', 'carts', '/components/customer/PageCarts.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (12, 'customer-orders', 'orders', '/components/customer/PageOrders.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (13, 'customer-statistic', 'statistic', '/components/customer/PageStatistic.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (14, 'customer-product-details', 'products/:product_id', '/components/admin/ProductDetailView.vue', '{"guest":true}', 1); --- INSERT INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES (15, 'admin-products', 'products', '/components/admin/PageProducts.vue', '{"guest":true}', 1); +-- INSERT IGNORE INTO b2b_routes +-- (name, path, component, meta, active) +-- VALUES +-- ('root', '', '', '{"trans": "route.root"}', 0), +-- ('home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1), +-- ('login', 'login', '/views/LoginView.vue', '{"guest":true}', 1), +-- ('register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1), +-- ('password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1), +-- ('reset-password', 'reset-password', '/views/ResetPasswordView.vue', '{"guest":true}', 1), +-- ('verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1); +INSERT IGNORE INTO `b2b_routes` (`id`, `name`, `path`, `component`, `meta`, `active`) VALUES +(1, 'root', '', '', '{"trans": "route.root"}', 0), +(2, 'home', '', '/views/HomeView.vue', '{"trans": "route.home"}', 1), +(3, 'login', 'login', '/views/LoginView.vue', '{"guest":true}', 1), +(4, 'register', 'register', '/views/RegisterView.vue', '{"guest":true}', 1), +(5, 'password-recovery', 'password-recovery', '/views/PasswordRecoveryView.vue', '{"guest":true}', 1), +(6, 'reset-password', 'reset-password', '/views/ResetPasswordForm.vue', '{"guest":true}', 1), +(7, 'verify-email', 'verify-email', '/views/VerifyEmailView.vue', '{"guest":true}', 1), +(8, 'category', 'category/:category_id-:link_rewrite', '/views/CategoryView.vue', '{"guest":true}', 1), +(9, 'admin-products-category', 'products/:category_id-:link_rewrite', '/components/admin/PageProducts.vue', '{ + "guest": true +}', 1), +(10, 'customer-addresses', 'addresses', '/components/customer/PageAddresses.vue', '{"guest":true}', 1), +(11, 'customer-carts', 'carts', '/components/customer/PageCarts.vue', '{"guest":true}', 1), +(12, 'customer-orders', 'orders', '/components/customer/PageOrders.vue', '{"guest":true}', 1), +(13, 'customer-statistic', 'statistic', '/components/customer/PageStatistic.vue', '{"guest":true}', 1), +(14, 'customer-product-details', 'products/:product_id/:link_rewrite', '/components/admin/ProductDetailView.vue', '{"guest":true}', 1), +(15, 'admin-products', 'products', '/components/admin/PageProducts.vue', '{"guest":true}', 1); CREATE TABLE IF NOT EXISTS b2b_top_menu ( menu_id INT AUTO_INCREMENT NOT NULL, @@ -54,97 +54,91 @@ CREATE TABLE IF NOT EXISTS b2b_top_menu ( INDEX FK_b2b_top_menu_parent_id_idx (parent_id ASC) ) ENGINE = InnoDB; - -INSERT IGNORE INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES -(1, JSON_COMPACT('{"name":"root","trans":{"pl":{"label":"Menu główne"},"en":{"label":"Main Menu"},"de":{"label":"Hauptmenü"}}}'),NULL,JSON_COMPACT('{}'),1,1), -(3, JSON_COMPACT('{"name":"admin-products","trans":{"pl":{"label":"admin-products"},"en":{"label":"admin-products"},"de":{"label":"admin-products"}}}'),1,JSON_COMPACT('{}'),1,1), -(9, JSON_COMPACT('{"name":"carts","trans":{"pl":{"label":"Koszyki"},"en":{"label":"Carts"},"de":{"label":"Warenkörbe"}}}'),3,JSON_COMPACT('{"route": {"name": "home", "params":{"locale": ""}}}'),1,1); - - --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (1, '{"name":"root","trans":{"pl":{"label":"Menu główne"},"en":{"label":"Main Menu"},"de":{"label":"Hauptmenü"}}}', NULL, '{}', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (2, '{ --- "name": "admin-products", --- "trans": { --- "pl": { --- "label": "Products" --- }, --- "en": { --- "label": "Products" --- }, --- "de": { --- "label": "Products" --- } --- }, --- "icon" : "quill:list" --- }', 1, '{"route":{"name":"admin-products","params":{"locale":""}}}', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (3, '{ --- "name": "customer-carts", --- "trans": { --- "pl": { --- "label": "Carts" --- }, --- "en": { --- "label": "Carts" --- }, --- "de": { --- "label": "Carts" --- } --- }, --- "icon" : "proicons:cart" --- }', 1, '{"route":{"name":"customer-carts","params":{"locale":""}}}', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (4, '{ --- "name": "customer-addresses", --- "trans": { --- "pl": { --- "label": "Addresses" --- }, --- "en": { --- "label": "Addresses" --- }, --- "de": { --- "label": "Addresses" --- } --- }, --- "icon" : "ph:address-book" --- }', 1, '{"route":{"name":"customer-addresses","params":{"locale":""}}}', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (5, '{ --- "name": "customer-orders", --- "trans": { --- "pl": { --- "label": "Orders" --- }, --- "en": { --- "label": "Orders" --- }, --- "de": { --- "label": "Orders" --- } --- }, --- "icon" : "lsicon:order-integral-outline" --- }', 1, '{"route":{"name":"customer-orders","params":{"locale":""}}}', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (6, '{ --- "name": "customer-statistic", --- "trans": { --- "pl": { --- "label": "Statistic" --- }, --- "en": { --- "label": "Statistic" --- }, --- "de": { --- "label": "Statistic" --- } --- }, --- "icon" : "akar-icons:statistic-up" --- }', 1, '{ --- "route": { --- "name": "customer-statistic", --- "params": { --- "locale": "" --- } --- } --- }', 1, 1); --- INSERT INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES (9, '{"name":"carts","trans":{"pl":{"label":"Koszyki"},"en":{"label":"Carts"},"de":{"label":"Warenkörbe"}}}', 3, '{"route":{"name":"home","params":{"locale":""}}}', 1, 1); +INSERT IGNORE INTO `b2b_top_menu` (`menu_id`, `label`, `parent_id`, `params`, `active`, `position`) VALUES +(1, '{"name":"root","trans":{"pl":{"label":"Menu główne"},"en":{"label":"Main Menu"},"de":{"label":"Hauptmenü"}}}', NULL, '{}', 1, 1), +(2, '{ + "name": "admin-products", + "trans": { + "pl": { + "label": "Products" + }, + "en": { + "label": "Products" + }, + "de": { + "label": "Products" + } + }, + "icon" : "quill:list" +}', 1, '{"route":{"name":"admin-products","params":{"locale":""}}}', 1, 1), +(3, '{ + "name": "customer-carts", + "trans": { + "pl": { + "label": "Carts" + }, + "en": { + "label": "Carts" + }, + "de": { + "label": "Carts" + } + }, + "icon" : "proicons:cart" +}', 1, '{"route":{"name":"customer-carts","params":{"locale":""}}}', 1, 1), +(4, '{ + "name": "customer-addresses", + "trans": { + "pl": { + "label": "Addresses" + }, + "en": { + "label": "Addresses" + }, + "de": { + "label": "Addresses" + } + }, + "icon" : "ph:address-book" +}', 1, '{"route":{"name":"customer-addresses","params":{"locale":""}}}', 1, 1), +(5, '{ + "name": "customer-orders", + "trans": { + "pl": { + "label": "Orders" + }, + "en": { + "label": "Orders" + }, + "de": { + "label": "Orders" + } + }, + "icon" : "lsicon:order-integral-outline" +}', 1, '{"route":{"name":"customer-orders","params":{"locale":""}}}', 1, 1), +(6, '{ + "name": "customer-statistic", + "trans": { + "pl": { + "label": "Statistic" + }, + "en": { + "label": "Statistic" + }, + "de": { + "label": "Statistic" + } + }, + "icon" : "akar-icons:statistic-up" +}', 1, '{ + "route": { + "name": "customer-statistic", + "params": { + "locale": "" + } + } +}', 1, 1), +(9, '{"name":"carts","trans":{"pl":{"label":"Koszyki"},"en":{"label":"Carts"},"de":{"label":"Warenkörbe"}}}', 3, '{"route":{"name":"home","params":{"locale":""}}}', 1, 1); diff --git a/i18n/migrations/20260302163123_create_tables_data.sql b/i18n/migrations/20260302163123_create_tables_data.sql index 88875c5..620fbb2 100644 --- a/i18n/migrations/20260302163123_create_tables_data.sql +++ b/i18n/migrations/20260302163123_create_tables_data.sql @@ -11,7 +11,6 @@ INSERT INTO `b2b_roles` (`name`, `id`) VALUES ('user','1'); INSERT INTO `b2b_roles` (`name`, `id`) VALUES ('admin','2'); INSERT INTO `b2b_roles` (`name`, `id`) VALUES ('super_admin','3'); - -- insert sample admin user admin@ma-al.com/Maal12345678 INSERT IGNORE INTO b2b_customers (id, email, password, first_name, last_name, role_id, provider, provider_id, avatar_url, is_active, email_verified, email_verification_token, email_verification_expires, password_reset_token, password_reset_expires, last_password_reset_request, last_login_at, lang_id, country_id, created_at, updated_at, deleted_at) VALUES @@ -30,6 +29,4 @@ VALUES (3, '🇨🇿', 16, 2), (4, '🇩🇪', 1, 2); - - -- +goose Down \ No newline at end of file