Commit Graph
59 Commits
Author SHA1 Message Date
Carlos R. L. Rodrigues b3f1135fba chore(medusa): link modules as medusa dependency (#5208) 2023-09-26 08:20:29 -04:00
Carlos R. L. Rodrigues 25dad081b7 fix(admin-ui): translation pt (#5176)
What:
Fix a couple of words in Portuguese
2023-09-21 18:16:22 +00:00
Carlos R. L. RodriguesandAdrien de Peretti 47603f4797 fix(modules-sdk): medusa app load legacy modules (#5115)
* fix: default module path

* fix: allow legacy modules to be loaded by MedusaApp

* changeset

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
2023-09-20 10:20:46 +02:00
Carlos R. L. Rodrigues 1e5a6d4359 fix(modules-sdk): medusa app default module (#5114) 2023-09-18 12:45:13 +00:00
Carlos R. L. Rodrigues 5362bfc348 feat(medusa): Drop FKs to isolate products (#5042)
What:
Remove FKs related to product domain tables
2023-09-13 12:05:37 +00:00
Carlos R. L. Rodrigues 05fcfd803e Fix(medusa): duplicated migration (#5029)
Fix duplicated migration class name
2023-09-12 20:15:47 +00:00
Carlos R. L. Rodrigues 0953bdfe84 feat(orchestration): Remote Joiner field aliases (#5013)
* initial commit

* chore: unit tests and forward arguments
2023-09-12 08:43:25 +02:00
Carlos R. L. Rodrigues d8649bacaa chore(modules-sdk,orchestration): to remote joiner query (#4974)
Helper function to transform js/json object into RemoteJoinerQuery format.

```typescript
toRemoteJoinerQuery({
  product: {
    fields: ["id", "title"],
    __args: {
      skip: 0,
    },
    variants: {
      fields: ["id", "title", "handle", "sku"],
      shipping_profile: {
        profile: {
          fields: ["id", "name"],
        },
      },
    },
    collections: {
      fields: ["id", "title"],
    },
  },
})
```

outputs:
```
{
  alias: "product",
  fields: ["id", "title"],
  expands: [
    {
      property: "product.variants",
      fields: ["id", "title", "handle", "sku"],
    },
    {
      property: "product.variants.shipping_profile",
    },
    {
      property: "product.variants.shipping_profile.profile",
      fields: ["id", "name"],
    },
    {
      property: "product.collections",
      fields: ["id", "title"],
    },
  ],
  args: [
    {
      name: "skip",
      value: 0,
    },
  ],
};
```
2023-09-10 13:26:50 +00:00
Carlos R. L. Rodrigues 4b0e3fb2a7 feat(medusa,orchestration): Decouple Product in Cart domain (#4945) 2023-09-08 17:24:46 +02:00
Carlos R. L. Rodrigues a4906d0ac0 chore(medusa,orchestration,link-modules,modules-sdk): internal services as modules (#4925) 2023-09-04 11:36:05 -03:00
Carlos R. L. RodriguesandRiqwan Thamir 4d16acf5f0 feat(link-modules,modules-sdk, utils, types, products) - Remote Link and Link modules (#4695)
What:
- Definition of all Modules links
- `link-modules` package to manage the creation of all pre-defined link or custom ones

```typescript
import { initialize as iniInventory } from "@medusajs/inventory";
import { initialize as iniProduct } from "@medusajs/product";

import {
  initialize as iniLinks,
  runMigrations as migrateLinks
} from "@medusajs/link-modules";

await Promise.all([iniInventory(), iniProduct()]);


await migrateLinks(); // create tables based on previous loaded modules

await iniLinks(); // load link based on previous loaded modules

await iniLinks(undefined, [
  {
    serviceName: "product_custom_translation_service_link",
    isLink: true,
    databaseConfig: {
      tableName: "product_transalations",
    },
    alias: [
      {
        name: "translations",
      },
    ],
    primaryKeys: ["id", "product_id", "translation_id"],
    relationships: [
      {
        serviceName: Modules.PRODUCT,
        primaryKey: "id",
        foreignKey: "product_id",
        alias: "product",
      },
      {
        serviceName: "custom_translation_service",
        primaryKey: "id",
        foreignKey: "translation_id",
        alias: "transalation",
        deleteCascade: true,
      },
    ],
    extends: [
      {
        serviceName: Modules.PRODUCT,
        relationship: {
          serviceName: "product_custom_translation_service_link",
          primaryKey: "product_id",
          foreignKey: "id",
          alias: "translations",
          isList: true,
        },
      },
      {
        serviceName: "custom_translation_service",
        relationship: {
          serviceName: "product_custom_translation_service_link",
          primaryKey: "product_id",
          foreignKey: "id",
          alias: "product_link",
        },
      },
    ],
  },
]); // custom links
```

Remote Link

```typescript
import { RemoteLink, Modules } from "@medusajs/modules-sdk";

// [...] initialize modules and links

const remoteLink = new RemoteLink();

// upsert the relationship
await remoteLink.create({ // one (object) or many (array)
  [Modules.PRODUCT]: {
    variant_id: "var_abc",
  },
  [Modules.INVENTORY]: {
    inventory_item_id: "iitem_abc",
  },
  data: { // optional additional fields
    required_quantity: 5
  }
});

// dismiss (doesn't cascade)
await remoteLink.dismiss({ // one (object) or many (array)
  [Modules.PRODUCT]: {
    variant_id: "var_abc",
  },
  [Modules.INVENTORY]: {
    inventory_item_id: "iitem_abc",
  },
});

// delete
await remoteLink.delete({
  // every key is a module
  [Modules.PRODUCT]: {
    // every key is a linkable field
    variant_id: "var_abc", // single or multiple values
  },
});

// restore
await remoteLink.restore({
  // every key is a module
  [Modules.PRODUCT]: {
    // every key is a linkable field
    variant_id: "var_abc", // single or multiple values
  },
});

```

Co-authored-by: Riqwan Thamir <5105988+riqwan@users.noreply.github.com>
2023-08-30 14:31:32 +00:00
Carlos R. L. Rodrigues d9c5e165cd chore: pipeline node version (#4896) 2023-08-28 19:41:47 +00:00
Carlos R. L. Rodrigues c53fa6cd3b fix(utils,product): mikro orm connection loader (#4825)
Fix shared connection property check
2023-08-22 12:35:52 +00:00
c0ca002901 feat(orchestration,workflows): pipe oncomplete and workflow preparation (#4697)
* chore: pipe onComplete and workflow preparation step

* changeset

* fix: tests

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-08-08 13:06:47 +02:00
Carlos R. L. Rodrigues f12299deb1 Feat: @medusajs/workflows (#4553)
feat: medusa workflows
2023-07-25 10:13:14 -03:00
Carlos R. L. Rodrigues f174bb6fa1 fix(modules-sdk): remote query get loaded modules (#4596) 2023-07-24 16:20:30 +00:00
Carlos R. L. Rodrigues 5a8a889c6d feat(modules-sdk): Remote Query (#4463)
* feat: Remote Query
2023-07-19 15:35:36 -03:00
Carlos R. L. Rodrigues 43427b8893 Feat(medusa) - Orchestrator builder (#4472)
* chore: Trasanction Orchestrator builder

* Feat(medusa): Workflow Manager (#4506)
2023-07-13 10:53:55 -03:00
Carlos R. L. Rodrigues 499c3478c9 feat: Remote Joiner (#4098) 2023-06-29 15:29:01 +02:00
Carlos R. L. Rodrigues e73c3e51c9 feat(modules-sdk): Module as singleton instances (#4065) 2023-05-18 10:12:18 +02:00
Carlos R. L. Rodrigues bd12a95083 chore: Initialize method for modules (#3649)
What:
- Export initialize methods for all modules to be used as a package.
- Export `runMigrations` and `revertMigration` on modules that DB migrations are available

```typescript
import {
  initialize as initializeInventory,
  InventoryServiceInitializeOptions,
  runMigrations as runMigrationsInventory,
} from "@medusajs/inventory";

import { initialize as eventBusInitialize } from "@medusajs/event-bus-redis";

import { initialize as cacheInitialize } from "@medusajs/cache-redis";

const eventBus = await eventBusInitialize({
  redisUrl: "localhost",
});

const cache = await cacheInitialize({
  redisUrl: "localhost",
});

const options: InventoryServiceInitializeOptions = {
  database: {
    type: "postgres",
    url: `postgres://postgres:@localhost/inventory`,
  },
};

await runMigrationsInventory({
  options,
});

const inventoryService = await initializeInventory(options, {
  eventBusService: eventBus,
});

const sku = "sku_123"
const item = await service.createInventoryItem({
  sku,
});

cache.set(sku, { item });

```
2023-03-31 12:09:04 +00:00
Carlos R. L. Rodrigues 0e8b3c8efb fix stdio (#3633) 2023-03-29 19:19:18 +02:00
Carlos R. L. Rodrigues 55e94d0b45 fix(modules-sdk): check if dependency is registered (#3620)
* fix: check if dependency is registered

* changeset
2023-03-29 08:47:12 +02:00
Carlos R. L. Rodrigues bca1f80dd5 chore(medusa, modules-sdk): default module error message (#3605)
* default module error message

* changeset

* unit test
2023-03-28 17:43:20 +02:00
Carlos R. L. Rodrigues 4e9d257d3b Chore(medusa,utils,types,inventory,stock-location): remove core dependency modules (#3531) 2023-03-23 08:07:32 -03:00
Carlos R. L. Rodrigues aa690beed7 feat(medusa): Modules initializer (#3352) 2023-03-17 12:18:52 -03:00
Carlos R. L. Rodrigues 2869763ea9 fix(medusa): EventBusService.emit using Redis mock (#3491)
* Fix eventBusService.emit using redis mock

* revert gitignore

* enqueuer

* unit test add redis_url

* fix test
2023-03-16 09:29:18 +01:00
Carlos R. L. Rodrigues 77d46220c2 Feat(modules-sdk,inventory,stock-location): modules isolated connection (#3329)
* feat: scoped container for modules
2023-03-15 12:09:45 -03:00
Carlos R. L. Rodrigues 54dcc1871c feat(medusa,medusa-core-utils): graceful shutdown server (#3408)
* feat: graceful shutdown
2023-03-10 09:11:45 -03:00
Carlos R. L. Rodrigues ad7f56506f Feat(medusa,modules-sdk): Modules SDK package (#3294) 2023-02-23 13:09:35 -03:00
Carlos R. L. RodriguesandOliver Windall Juhl 80452332d8 fix(medusa): Default sales channel on product create (#3249)
What:
Assign the default sales channel if none is provided while creating a new product.


FIXES: CORE-1114

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-02-14 08:46:14 +00:00
Carlos R. L. Rodrigues d859ccf551 Feat(medusa) - delete cascade modules associations (#3190)
* delete cascade sales channel x locations, variant x inventory item
2023-02-08 17:23:47 -03:00
Carlos R. L. Rodrigues 923ccece24 feat(medusa,stock-location,inventory): Integration tests (#3149) 2023-02-06 09:02:43 -03:00
Carlos R. L. Rodrigues d50db84a33 Feat: TO variant creation (#3097) 2023-02-02 09:01:10 -03:00
Carlos R. L. Rodrigues f776ed234f feat(medusa): Run shared module migrations (#3109) 2023-02-01 08:10:59 -03:00
Carlos R. L. RodriguesandOliver Windall Juhl 2d525237b6 fix(stock-location): Stock location address required (#3065)
What:
- Removes the requirement to have an address id while creating a new stock location.
- Add field company to Location Address

FIXES: CORE-1018

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-01-23 12:47:04 +00:00
Carlos R. L. RodriguesandSebastian Rindom f65f590a27 feat: inventory items api (#2971)
What:
Admin endpoints to handle inventory items and their stock levels per location

FIXES: CORE-975

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
2023-01-23 12:06:23 +00:00
Carlos R. L. Rodrigues aa54d902e5 chore: added missing withTransacton, create-variant using TO (#3047)
Create variant integrated with Inventory modules
2023-01-18 09:29:06 -03:00
Carlos R. L. Rodrigues 0175388835 feat(medusa): Transaction Orchestrator (#2861)
* chore: transaction orchestrator
2023-01-16 20:16:41 -03:00
Carlos R. L. Rodrigues f6ec05f3f9 feat(medusa): Validate module required properties (#3029) 2023-01-15 17:08:08 +01:00
Carlos R. L. Rodrigues 9dbccd9ca7 feat(medusa, stock-location, inventory): Allow modules to integrate with core (#2997)
* feat: module shared resources
2023-01-13 10:39:43 -03:00
Carlos R. L. Rodrigues 93ee248493 feat(medusa, inventory): Inventory Management module (#2956)
* feat: inventory module
2023-01-10 14:38:30 -03:00
Carlos R. L. Rodrigues c07ffb6165 feat(medusa): Stock location module (#2907)
* feat: stock location module
2023-01-04 13:11:59 -03:00
Carlos R. L. Rodrigues 726858d847 chore: complete payment collection on order edit even if confirmed (#2877) 2022-12-22 13:07:41 -03:00
Carlos R. L. Rodrigues 8dcc805ccf feat(medusa): Validate required id before retrieving (#2738) 2022-12-19 09:49:18 +01:00
Carlos R. L. Rodrigues 15c667fbd3 feat(medusa,medusa-react): PaymentCollection support (#2659)
* chore: medusa react, order edit complete fix and single payment session
2022-12-07 12:39:35 -03:00
Carlos R. L. Rodrigues 01a879ac94 chore: markAsAuthorized and payment collection tests (#2620)
* chore: markAsAuthorized and payment collection tests
2022-11-18 11:23:35 -03:00
Carlos R. L. Rodrigues ccfc5f666d feat(medusa-js): Add payment and payment collections clients (#2608) 2022-11-15 21:27:00 +01:00
Carlos R. L. Rodrigues 4baa2e0149 docs: payment and payment collection OAS (#2604) 2022-11-15 14:30:47 +00:00
Carlos R. L. Rodrigues 755ba90c05 feat(medusa): Payment Collection endpoints (#2525) 2022-11-11 18:28:45 +01:00
Carlos R. L. Rodrigues c3f8297599 feat(medusa): manage payment sessions from payment collection (#2402)
* feat: manage payment sessions from payment collection
2022-11-02 13:34:29 -03:00
Carlos R. L. Rodrigues b88cef2b1f feat: Development server for core + plugins (#2448) 2022-10-21 15:53:06 +02:00
Carlos R. L. Rodrigues d0f274dbe7 feat(medusa): PaymentCollectionService (#2365) 2022-10-07 09:37:10 +02:00
Carlos R. L. Rodrigues e20f77ac66 feat: payment collection data model (#2343)
* feat: payment collection data model
2022-10-04 15:41:12 -03:00
Carlos R. L. Rodrigues eb8034502b chore: initial commit fix linting issues (#2169)
* chore: lint fixes
2022-09-21 12:19:03 -03:00
Carlos R. L. Rodrigues a94d9816fe chore: Centralise ESLint rules (#2162)
* chore: centrilize eslint rules
2022-09-13 07:42:33 -03:00
Carlos R. L. Rodrigues 846ae637e2 fix(medusa): Hot reloading on Windows (#2105) 2022-08-29 15:46:15 +02:00
Carlos R. L. Rodrigues ffd6234356 chore(integration): throw errors on catch blocks (#2091)
Why:
Suppressing errors and not failing the execution will lead to misleading errors of the following tests.

Fixes CORE-461
2022-08-25 06:36:24 +00:00
Carlos R. L. Rodrigues 690ca9e89a chore(integration-tests): Normalize DB config + use single process (#2077) 2022-08-24 12:29:53 +02:00