1 | ;
|
2 | var Log = require("../log");
|
3 | var Constants_1 = require("../Constants");
|
4 | var MetadataManager_1 = require("../MetadataManager");
|
5 | var log = Log.create(__filename);
|
6 | /**
|
7 | * Decorate the repo for a given model
|
8 | *
|
9 | * @param opts for the repository
|
10 | * @return {function(Function)}
|
11 | */
|
12 | function RepoDescriptor(opts) {
|
13 | if (opts === void 0) { opts = {}; }
|
14 | return function (constructor) {
|
15 | Reflect.defineMetadata(Constants_1.TypeStoreRepoKey, opts, constructor);
|
16 | };
|
17 | }
|
18 | exports.RepoDescriptor = RepoDescriptor;
|
19 | /**
|
20 | * Get finder options for a specific
|
21 | * repo and finder
|
22 | *
|
23 | * @param repo
|
24 | * @param key
|
25 | * @returns {IFinderOptions}
|
26 | */
|
27 | function getFinderOpts(repo, key) {
|
28 | return MetadataManager_1.getMetadata(Constants_1.TypeStoreFinderKey, repo, key);
|
29 | }
|
30 | exports.getFinderOpts = getFinderOpts;
|
31 | /**
|
32 | * Describe a finder function that has to be implemented by the store
|
33 | *
|
34 | * @returns {function(any, string, TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any>}
|
35 | */
|
36 | function FinderDescriptor(opts) {
|
37 | if (opts === void 0) { opts = {}; }
|
38 | return function (target, propertyKey, descriptor) {
|
39 | // Add the options to metadata
|
40 | Reflect.defineMetadata(Constants_1.TypeStoreFinderKey, opts, target, propertyKey);
|
41 | // Now add the finders to the repo metadata
|
42 | var finders = Reflect.getMetadata(Constants_1.TypeStoreFindersKey, target) || [];
|
43 | finders.push(propertyKey);
|
44 | Reflect.defineMetadata(Constants_1.TypeStoreFindersKey, finders, target);
|
45 | //return descriptor
|
46 | };
|
47 | }
|
48 | exports.FinderDescriptor = FinderDescriptor;
|
49 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb0RlY29yYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlY29yYXRpb25zL1JlcG9EZWNvcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNEJBQTZCO0FBRzdCLDBDQU1zQjtBQUd0QixzREFBOEM7QUFFOUMsSUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUVsQzs7Ozs7R0FLRztBQUNILHdCQUErQixJQUFzQjtJQUF0QixxQkFBQSxFQUFBLFNBQXNCO0lBR3BELE1BQU0sQ0FBQyxVQUFVLFdBQW9CO1FBQ3BDLE9BQU8sQ0FBQyxjQUFjLENBQUMsNEJBQWdCLEVBQUMsSUFBSSxFQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzFELENBQUMsQ0FBQTtBQUNGLENBQUM7QUFORCx3Q0FNQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCx1QkFBOEIsSUFBYyxFQUFDLEdBQVU7SUFDdEQsTUFBTSxDQUFDLDZCQUFXLENBQ2pCLDhCQUFrQixFQUNsQixJQUFJLEVBQ0osR0FBRyxDQUNILENBQUE7QUFDRixDQUFDO0FBTkQsc0NBTUM7QUFFRDs7OztHQUlHO0FBQ0gsMEJBQWlDLElBQXdCO0lBQXhCLHFCQUFBLEVBQUEsU0FBd0I7SUFFeEQsTUFBTSxDQUFDLFVBQ04sTUFBUSxFQUNSLFdBQWtCLEVBQ2xCLFVBQXVDO1FBRXZDLDhCQUE4QjtRQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLDhCQUFrQixFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsV0FBVyxDQUFDLENBQUE7UUFFbEUsMkNBQTJDO1FBQzNDLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsK0JBQW1CLEVBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDekIsT0FBTyxDQUFDLGNBQWMsQ0FBQywrQkFBbUIsRUFBQyxPQUFPLEVBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUQsbUJBQW1CO0lBQ3BCLENBQUMsQ0FBQTtBQUNGLENBQUM7QUFoQkQsNENBZ0JDIn0= |
\ | No newline at end of file |