@pintahub/database-schemas 6.16.0 → 6.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -128,7 +128,7 @@ Account, User, Store, Shop, ShopifyAPI
128
128
  Product, ProductFeature, ProductImage, ProductRaw, ProductType, ProductTag, ProductImport, Customize, CustomField, FieldSetting
129
129
 
130
130
  ### Collections & Groups
131
- Collection, Group, GroupItem, GroupArtwork
131
+ Collection, Group, GroupItem, GroupArtwork, GroupSyncRule
132
132
 
133
133
  ### Orders & Fulfillment
134
134
  Order, OrderItem, Fulfillment, Payout
@@ -140,7 +140,7 @@ Post, Menu, MenuItem, AnnouncementBar
140
140
  Image, Artwork, Media, MediaUpload, TempUpload
141
141
 
142
142
  ### Analytics & Tracking
143
- StoreEvent, LatestEvent, RecentView, SearchTerm, FavoriteItem, TrackPage, MarketingCost
143
+ StoreEvent, LatestEvent, RecentView, SearchTerm, FavoriteItem, TrackPage, MarketingCost, MarketingCostRaw
144
144
 
145
145
  ### Short URLs
146
146
  ShortUrl, ShortDomain, ShortLog, LogURL
@@ -158,7 +158,7 @@ CreatorReport, ProductReport
158
158
  Review
159
159
 
160
160
  ### Embedded Types
161
- `schemas/types/`: BrandSettings, DMCASetting, FacebookObject, FooterSetting, FreeShippingSetting, GoogleAnalytics, KlaviyoObject, MerchizeSettings, SocialsObject, TopBarSettings, TrustpilotObject
161
+ `schemas/types/`: BrandSettings, DMCASetting, FacebookObject, FooterSetting, FreeShippingSetting, GoogleAnalytics, GroupSyncRuleMetafield, KlaviyoObject, MerchizeSettings, SocialsObject, TopBarSettings, TrustpilotObject
162
162
 
163
163
  `schemas/products/`: MediaObject, SeoObject, VideoObject
164
164
 
@@ -0,0 +1,14 @@
1
+ import type { Types } from 'mongoose';
2
+ import type { IGroupSyncRuleMetafield } from './types/GroupSyncRuleMetafield';
3
+ export interface IGroupSyncRule {
4
+ store: Types.ObjectId;
5
+ /** Rule kind — decides which sub-document holds the target */
6
+ type: 'metafield';
7
+ /** Group field whose value the rule syncs */
8
+ group_field: 'title' | 'description' | 'label' | 'tags' | 'visibility' | 'trello_id' | 'user_idea';
9
+ /** Required when type is 'metafield' */
10
+ metafield?: IGroupSyncRuleMetafield;
11
+ updated_at?: Date;
12
+ created_at?: Date;
13
+ }
14
+ //# sourceMappingURL=GroupSyncRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRule.d.ts","sourceRoot":"","sources":["../../src/interfaces/GroupSyncRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,gCAAgC,CAAA;AAE3E,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAA;IACrB,8DAA8D;IAC9D,IAAI,EAAE,WAAW,CAAA;IACjB,6CAA6C;IAC7C,WAAW,EAAE,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAA;IAClG,wCAAwC;IACxC,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,UAAU,CAAC,EAAE,IAAI,CAAA;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GroupSyncRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRule.js","sourceRoot":"","sources":["../../src/interfaces/GroupSyncRule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { Types } from 'mongoose';
2
+ export interface IMarketingCostRaw {
3
+ marketing_cost: Types.ObjectId;
4
+ store: Types.ObjectId;
5
+ /** Whole CSV row, keyed by slugified header; values are raw strings, column set varies by export */
6
+ data: Record<string, any>;
7
+ /** Provenance only — S3 key of the source file */
8
+ source_key?: string;
9
+ /** Provenance only — record ordinal within that file (header is 0, first data row is 1); not a physical line number */
10
+ line?: number;
11
+ updated_at?: Date;
12
+ created_at?: Date;
13
+ }
14
+ //# sourceMappingURL=MarketingCostRaw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketingCostRaw.d.ts","sourceRoot":"","sources":["../../src/interfaces/MarketingCostRaw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAA;IACrB,oGAAoG;IACpG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uHAAuH;IACvH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,UAAU,CAAC,EAAE,IAAI,CAAA;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MarketingCostRaw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketingCostRaw.js","sourceRoot":"","sources":["../../src/interfaces/MarketingCostRaw.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface IGroupSyncRuleMetafield {
2
+ namespace: string;
3
+ key: string;
4
+ /** Shopify metafield type, e.g. 'single_line_text_field' — not checked against the store's metafield definitions */
5
+ type: string;
6
+ }
7
+ //# sourceMappingURL=GroupSyncRuleMetafield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRuleMetafield.d.ts","sourceRoot":"","sources":["../../../src/interfaces/types/GroupSyncRuleMetafield.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,oHAAoH;IACpH,IAAI,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GroupSyncRuleMetafield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRuleMetafield.js","sourceRoot":"","sources":["../../../src/interfaces/types/GroupSyncRuleMetafield.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { Schema } from 'mongoose';
2
+ /**
3
+ * A per-store rule that syncs one group field onto the group's member products when
4
+ * "Apply to products" runs. `type` names the kind of target, and each kind keeps its
5
+ * own config in a sub-document named after it (`metafield` for type 'metafield').
6
+ * Adding a kind means a new `type` enum value plus its own sub-document — the
7
+ * collection keeps its name.
8
+ */
9
+ declare const GroupSyncRule: Schema<any, import("mongoose").Model<any, any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Record<string, any>, import("mongoose").Document<unknown, {}, Record<string, any>, {
10
+ id: string;
11
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
12
+ _id: unknown;
13
+ }> & {
14
+ __v: number;
15
+ }, "id"> & {
16
+ id: string;
17
+ }, {
18
+ [path: string]: import("mongoose").SchemaDefinitionProperty<undefined, any, any>;
19
+ } | {
20
+ [x: string]: import("mongoose").SchemaDefinitionProperty<any, any, import("mongoose").Document<unknown, {}, Record<string, any>, {
21
+ id: string;
22
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
23
+ _id: unknown;
24
+ }> & {
25
+ __v: number;
26
+ }, "id"> & {
27
+ id: string;
28
+ }> | undefined;
29
+ }, {
30
+ [x: string]: any;
31
+ } & Required<{
32
+ _id: unknown;
33
+ }> & {
34
+ __v: number;
35
+ }>;
36
+ export = GroupSyncRule;
37
+ //# sourceMappingURL=GroupSyncRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRule.d.ts","sourceRoot":"","sources":["../../src/schemas/GroupSyncRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAE/B;;;;;;GAMG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEjB,CAAA;AAoBF,SAAS,aAAa,CAAA"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ const mongoose_1 = require("mongoose");
3
+ const GroupSyncRuleMetafield = require("./types/GroupSyncRuleMetafield");
4
+ /**
5
+ * A per-store rule that syncs one group field onto the group's member products when
6
+ * "Apply to products" runs. `type` names the kind of target, and each kind keeps its
7
+ * own config in a sub-document named after it (`metafield` for type 'metafield').
8
+ * Adding a kind means a new `type` enum value plus its own sub-document — the
9
+ * collection keeps its name.
10
+ */
11
+ const GroupSyncRule = new mongoose_1.Schema({
12
+ /** @ref Store */
13
+ store: {
14
+ type: mongoose_1.Schema.Types.ObjectId,
15
+ ref: 'Store',
16
+ index: true,
17
+ required: true,
18
+ },
19
+ /**
20
+ * Rule kind, which decides the sub-document that holds the target:
21
+ * - metafield: write the group field into a Shopify product metafield (`metafield`)
22
+ */
23
+ type: {
24
+ type: String,
25
+ trim: true,
26
+ required: true,
27
+ enum: ['metafield'],
28
+ },
29
+ /**
30
+ * Group field whose value the rule syncs, shared by every rule kind. `tags` is the
31
+ * only array field on Group; the rest are strings:
32
+ * - title
33
+ * - description
34
+ * - label
35
+ * - tags
36
+ * - visibility
37
+ * - trello_id
38
+ * - user_idea
39
+ */
40
+ group_field: {
41
+ type: String,
42
+ trim: true,
43
+ required: true,
44
+ enum: ['title', 'description', 'label', 'tags', 'visibility', 'trello_id', 'user_idea'],
45
+ },
46
+ /**
47
+ * Target metafield — required when `type` is 'metafield', absent for any other kind.
48
+ *
49
+ * The condition is only checked by document validation (`create()` / `save()`). Update
50
+ * queries skip it even with `runValidators: true`: `$unset: {metafield: 1}` goes through
51
+ * on a 'metafield' rule, while `$set` of an incomplete `metafield` object is still
52
+ * rejected by its own required fields. Write paths that update rules must keep `type`
53
+ * and `metafield` consistent themselves.
54
+ */
55
+ metafield: {
56
+ type: GroupSyncRuleMetafield,
57
+ required: function () {
58
+ return this.type === 'metafield';
59
+ },
60
+ },
61
+ /** Last update timestamp */
62
+ updated_at: {
63
+ type: Date,
64
+ default: Date.now,
65
+ },
66
+ /** Record creation timestamp */
67
+ created_at: {
68
+ type: Date,
69
+ default: Date.now,
70
+ }
71
+ });
72
+ /**
73
+ * One rule per metafield per store: two rules writing the same `namespace.key` would
74
+ * overwrite each other in whatever order they happen to run.
75
+ *
76
+ * Partial on `type: 'metafield'` on purpose. Rules of any other kind carry no
77
+ * `metafield`, and a plain unique index would index every one of them as
78
+ * (store, null, null), so the second such rule in a store would fail with E11000.
79
+ * A query only uses this index when its filter includes `type: 'metafield'`.
80
+ */
81
+ GroupSyncRule.index({
82
+ store: 1,
83
+ 'metafield.namespace': 1,
84
+ 'metafield.key': 1,
85
+ }, {
86
+ unique: true,
87
+ partialFilterExpression: { type: 'metafield' },
88
+ });
89
+ module.exports = GroupSyncRule;
90
+ //# sourceMappingURL=GroupSyncRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRule.js","sourceRoot":"","sources":["../../src/schemas/GroupSyncRule.ts"],"names":[],"mappings":";AAAA,uCAA+B;AAC/B,yEAAyE;AACzE;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,IAAI,iBAAM,CAAsB;IAClD,iBAAiB;IACjB,KAAK,EAAE;QACH,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;KACjB;IAED;;;OAGG;IACH,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,CAAC,WAAW,CAAC;KACtB;IAED;;;;;;;;;;OAUG;IACH,WAAW,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC;KAC1F;IAED;;;;;;;;OAQG;IACH,SAAS,EAAE;QACP,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE;YACN,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAA;QACpC,CAAC;KACJ;IAED,4BAA4B;IAC5B,UAAU,EAAE;QACR,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KACpB;IAED,gCAAgC;IAChC,UAAU,EAAE;QACR,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KACpB;CACJ,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,aAAa,CAAC,KAAK,CAAC;IAChB,KAAK,EAAE,CAAC;IACR,qBAAqB,EAAE,CAAC;IACxB,eAAe,EAAE,CAAC;CACrB,EAAE;IACC,MAAM,EAAE,IAAI;IACZ,uBAAuB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC;CAC/C,CAAC,CAAA;AAEF,iBAAS,aAAa,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { Schema } from 'mongoose';
2
+ /**
3
+ * The raw CSV row behind one MarketingCost doc — every column of the Facebook Ads
4
+ * export, exactly as parsed. The cost import writes one MarketingCost per CSV row,
5
+ * so this is a 1:1 snapshot of a single row, never an aggregate of several.
6
+ */
7
+ declare const MarketingCostRaw: Schema<any, import("mongoose").Model<any, any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Record<string, any>, import("mongoose").Document<unknown, {}, Record<string, any>, {
8
+ id: string;
9
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
10
+ _id: unknown;
11
+ }> & {
12
+ __v: number;
13
+ }, "id"> & {
14
+ id: string;
15
+ }, {
16
+ [path: string]: import("mongoose").SchemaDefinitionProperty<undefined, any, any>;
17
+ } | {
18
+ [x: string]: import("mongoose").SchemaDefinitionProperty<any, any, import("mongoose").Document<unknown, {}, Record<string, any>, {
19
+ id: string;
20
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
21
+ _id: unknown;
22
+ }> & {
23
+ __v: number;
24
+ }, "id"> & {
25
+ id: string;
26
+ }> | undefined;
27
+ }, {
28
+ [x: string]: any;
29
+ } & Required<{
30
+ _id: unknown;
31
+ }> & {
32
+ __v: number;
33
+ }>;
34
+ export = MarketingCostRaw;
35
+ //# sourceMappingURL=MarketingCostRaw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketingCostRaw.d.ts","sourceRoot":"","sources":["../../src/schemas/MarketingCostRaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B;;;;GAIG;AACH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DpB,CAAA;AAaF,SAAS,gBAAgB,CAAA"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ const mongoose_1 = require("mongoose");
3
+ /**
4
+ * The raw CSV row behind one MarketingCost doc — every column of the Facebook Ads
5
+ * export, exactly as parsed. The cost import writes one MarketingCost per CSV row,
6
+ * so this is a 1:1 snapshot of a single row, never an aggregate of several.
7
+ */
8
+ const MarketingCostRaw = new mongoose_1.Schema({
9
+ /** @ref MarketingCost — 1:1; the unique index at the bottom of this file is what enforces it */
10
+ marketing_cost: {
11
+ type: mongoose_1.Schema.Types.ObjectId,
12
+ required: true,
13
+ },
14
+ /** @ref Store */
15
+ store: {
16
+ type: mongoose_1.Schema.Types.ObjectId,
17
+ ref: 'Store',
18
+ index: true,
19
+ required: true,
20
+ },
21
+ /**
22
+ * The whole CSV row, keyed by slugified header — `Amount spent (USD)` arrives as
23
+ * `amountspentusd`. Read key names off a real doc, not off the export's header line.
24
+ *
25
+ * Deliberately a bare Mixed with no sub-schema: the column set changes between
26
+ * exports (24 columns in one file, 26 with `day` and `adsetid` in another uploaded
27
+ * the same day), and declaring any child field would switch strict mode on for this
28
+ * branch and silently drop every column that was not declared.
29
+ *
30
+ * Values are raw strings straight from the CSV — nothing is parsed or coerced, so a
31
+ * metric the export left blank is `""`, not 0. Mutating this in place on a hydrated
32
+ * doc needs `markModified('data')`; the import writes it through `$set` instead.
33
+ */
34
+ data: {
35
+ type: mongoose_1.Schema.Types.Mixed,
36
+ required: true,
37
+ },
38
+ /** Provenance only: S3 key of the file this row came from. Not indexed, never read from */
39
+ source_key: {
40
+ type: String,
41
+ trim: true,
42
+ },
43
+ /**
44
+ * Provenance only: which record of that file this row was, as counted by
45
+ * `@pintahub/csv-importer` — the header is 0, so the first data row is 1.
46
+ * Not a physical line number: the parser runs with `skip_empty_lines`, so a
47
+ * blank line in the file shifts every later record. Good enough to find a row
48
+ * again, wrong for `sed -n '<line>p'`. Not indexed, never read from.
49
+ */
50
+ line: {
51
+ type: Number,
52
+ },
53
+ /** Last update timestamp */
54
+ updated_at: {
55
+ type: Date,
56
+ default: Date.now,
57
+ },
58
+ /** Record creation timestamp */
59
+ created_at: {
60
+ type: Date,
61
+ default: Date.now,
62
+ }
63
+ });
64
+ /**
65
+ * 1:1 with MarketingCost, and the whole idempotency mechanism of the cost import:
66
+ * the importer upserts on this key, so re-importing the same file creates no
67
+ * duplicate, and a restate (a second export file covering the same report date)
68
+ * overwrites the raw row at the same moment it overwrites `cost.amount` — the two
69
+ * can never drift apart.
70
+ */
71
+ MarketingCostRaw.index({
72
+ marketing_cost: 1,
73
+ }, { unique: true });
74
+ module.exports = MarketingCostRaw;
75
+ //# sourceMappingURL=MarketingCostRaw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketingCostRaw.js","sourceRoot":"","sources":["../../src/schemas/MarketingCostRaw.ts"],"names":[],"mappings":";AAAA,uCAA+B;AAC/B;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,iBAAM,CAAsB;IACrD,gGAAgG;IAChG,cAAc,EAAE;QACZ,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI;KACjB;IAED,iBAAiB;IACjB,KAAK,EAAE;QACH,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;KACjB;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE;QACF,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK;QACxB,QAAQ,EAAE,IAAI;KACjB;IAED,2FAA2F;IAC3F,UAAU,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;KACb;IAED;;;;;;OAMG;IACH,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;KACf;IAED,4BAA4B;IAC5B,UAAU,EAAE;QACR,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KACpB;IAED,gCAAgC;IAChC,UAAU,EAAE;QACR,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KACpB;CACJ,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,gBAAgB,CAAC,KAAK,CAAC;IACnB,cAAc,EAAE,CAAC;CACpB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAA;AAElB,iBAAS,gBAAgB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { Schema } from 'mongoose';
2
+ /**
3
+ * Embedded target of a `GroupSyncRule` whose `type` is 'metafield': the Shopify
4
+ * product metafield the rule writes the group field's value into.
5
+ *
6
+ * Keep this a separate Schema. Inlined into the parent as a plain object
7
+ * (`metafield: {namespace: String, key: String, type: String}`), the `type` key would
8
+ * be read as the type of `metafield` itself and the whole path would become a String.
9
+ */
10
+ declare const GroupSyncRuleMetafield: Schema<any, import("mongoose").Model<any, any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Record<string, any>, import("mongoose").Document<unknown, {}, Record<string, any>, {
11
+ id: string;
12
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
13
+ _id: unknown;
14
+ }> & {
15
+ __v: number;
16
+ }, "id"> & {
17
+ id: string;
18
+ }, {
19
+ [path: string]: import("mongoose").SchemaDefinitionProperty<undefined, any, any>;
20
+ } | {
21
+ [x: string]: import("mongoose").SchemaDefinitionProperty<any, any, import("mongoose").Document<unknown, {}, Record<string, any>, {
22
+ id: string;
23
+ }, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & Omit<Record<string, any> & Required<{
24
+ _id: unknown;
25
+ }> & {
26
+ __v: number;
27
+ }, "id"> & {
28
+ id: string;
29
+ }> | undefined;
30
+ }, {
31
+ [x: string]: any;
32
+ } & Required<{
33
+ _id: unknown;
34
+ }> & {
35
+ __v: number;
36
+ }>;
37
+ export = GroupSyncRuleMetafield;
38
+ //# sourceMappingURL=GroupSyncRuleMetafield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRuleMetafield.d.ts","sourceRoot":"","sources":["../../../src/schemas/types/GroupSyncRuleMetafield.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B;;;;;;;GAOG;AACH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B1B,CAAA;AAEF,SAAS,sBAAsB,CAAA"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ const mongoose_1 = require("mongoose");
3
+ /**
4
+ * Embedded target of a `GroupSyncRule` whose `type` is 'metafield': the Shopify
5
+ * product metafield the rule writes the group field's value into.
6
+ *
7
+ * Keep this a separate Schema. Inlined into the parent as a plain object
8
+ * (`metafield: {namespace: String, key: String, type: String}`), the `type` key would
9
+ * be read as the type of `metafield` itself and the whole path would become a String.
10
+ */
11
+ const GroupSyncRuleMetafield = new mongoose_1.Schema({
12
+ _id: false,
13
+ /** Shopify metafield namespace, e.g. 'custom' */
14
+ namespace: {
15
+ type: String,
16
+ trim: true,
17
+ required: true,
18
+ },
19
+ /** Shopify metafield key within the namespace, e.g. 'design_title' */
20
+ key: {
21
+ type: String,
22
+ trim: true,
23
+ required: true,
24
+ },
25
+ /**
26
+ * Shopify metafield type, e.g. 'single_line_text_field' or 'list.single_line_text_field'.
27
+ * Typed in by the admin; deliberately not an enum and not checked against the store's
28
+ * metafield definitions, so a wrong type only surfaces as a Shopify error when the
29
+ * rule is applied.
30
+ */
31
+ type: {
32
+ type: String,
33
+ trim: true,
34
+ required: true,
35
+ },
36
+ });
37
+ module.exports = GroupSyncRuleMetafield;
38
+ //# sourceMappingURL=GroupSyncRuleMetafield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupSyncRuleMetafield.js","sourceRoot":"","sources":["../../../src/schemas/types/GroupSyncRuleMetafield.ts"],"names":[],"mappings":";AAAA,uCAA+B;AAC/B;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,IAAI,iBAAM,CAAsB;IAC3D,GAAG,EAAE,KAAK;IAEV,iDAAiD;IACjD,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACjB;IAED,sEAAsE;IACtE,GAAG,EAAE;QACD,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACjB;IAED;;;;;OAKG;IACH,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACjB;CACJ,CAAC,CAAA;AAEF,iBAAS,sBAAsB,CAAA"}
package/dist/types.d.ts CHANGED
@@ -15,11 +15,13 @@ export type { IFulfillment } from './interfaces/Fulfillment';
15
15
  export type { IGroup } from './interfaces/Group';
16
16
  export type { IGroupArtwork } from './interfaces/GroupArtwork';
17
17
  export type { IGroupItem } from './interfaces/GroupItem';
18
+ export type { IGroupSyncRule } from './interfaces/GroupSyncRule';
18
19
  export type { IImage } from './interfaces/Image';
19
20
  export type { IImageObject } from './interfaces/ImageObject';
20
21
  export type { ILatestEvent } from './interfaces/LatestEvent';
21
22
  export type { ILogURL } from './interfaces/LogURL';
22
23
  export type { IMarketingCost } from './interfaces/MarketingCost';
24
+ export type { IMarketingCostRaw } from './interfaces/MarketingCostRaw';
23
25
  export type { IMedia } from './interfaces/Media';
24
26
  export type { IMediaUpload } from './interfaces/MediaUpload';
25
27
  export type { IMenu } from './interfaces/Menu';
@@ -68,6 +70,7 @@ export type { IFacebookObject } from './interfaces/types/FacebookObject';
68
70
  export type { IFooterSetting } from './interfaces/types/FooterSetting';
69
71
  export type { IFreeShippingSetting } from './interfaces/types/FreeShippingSetting';
70
72
  export type { IGoogleAnalytics } from './interfaces/types/GoogleAnalytics';
73
+ export type { IGroupSyncRuleMetafield } from './interfaces/types/GroupSyncRuleMetafield';
71
74
  export type { IKlaviyoObject } from './interfaces/types/KlaviyoObject';
72
75
  export type { IMerchizeSettings } from './interfaces/types/MerchizeSettings';
73
76
  export type { ISocialsObject } from './interfaces/types/SocialsObject';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pintahub/database-schemas",
3
- "version": "6.16.0",
3
+ "version": "6.18.0",
4
4
  "description": "Pintahub MongoDB schemas (TypeScript). Compatible with both schemis (CJS) and schemas-ts (ESM) resolvers.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",