18d05d8e7Sopenharmony_ci/*
28d05d8e7Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
38d05d8e7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48d05d8e7Sopenharmony_ci * you may not use this file except in compliance with the License.
58d05d8e7Sopenharmony_ci * You may obtain a copy of the License at
68d05d8e7Sopenharmony_ci *
78d05d8e7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
88d05d8e7Sopenharmony_ci *
98d05d8e7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108d05d8e7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118d05d8e7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128d05d8e7Sopenharmony_ci * See the License for the specific language governing permissions and
138d05d8e7Sopenharmony_ci * limitations under the License.
148d05d8e7Sopenharmony_ci */
158d05d8e7Sopenharmony_ci
168d05d8e7Sopenharmony_ci#include <memory>
178d05d8e7Sopenharmony_ci#include <vector>
188d05d8e7Sopenharmony_ci
198d05d8e7Sopenharmony_ci#include "filemgmt_libn.h"
208d05d8e7Sopenharmony_ci#include "hilog_wrapper.h"
218d05d8e7Sopenharmony_ci#include "recent_n_exporter.h"
228d05d8e7Sopenharmony_ci
238d05d8e7Sopenharmony_cinamespace OHOS::FileManagement::Recent {
248d05d8e7Sopenharmony_ciusing namespace std;
258d05d8e7Sopenharmony_ciusing namespace LibN;
268d05d8e7Sopenharmony_ci
278d05d8e7Sopenharmony_cistatic napi_value Export(napi_env env, napi_value exports)
288d05d8e7Sopenharmony_ci{
298d05d8e7Sopenharmony_ci    std::vector<unique_ptr<NExporter>> products;
308d05d8e7Sopenharmony_ci    products.emplace_back(make_unique<RecentNExporter>(env, exports));
318d05d8e7Sopenharmony_ci    for (auto &&product : products) {
328d05d8e7Sopenharmony_ci        if (!product->Export()) {
338d05d8e7Sopenharmony_ci            HILOG_ERROR("INNER BUG. Failed to export class %{public}s for module recent",
348d05d8e7Sopenharmony_ci                product->GetClassName().c_str());
358d05d8e7Sopenharmony_ci            return nullptr;
368d05d8e7Sopenharmony_ci        } else {
378d05d8e7Sopenharmony_ci            HILOG_DEBUG("Class %{public}s for module fileio has been exported", product->GetClassName().c_str());
388d05d8e7Sopenharmony_ci        }
398d05d8e7Sopenharmony_ci    }
408d05d8e7Sopenharmony_ci
418d05d8e7Sopenharmony_ci    return exports;
428d05d8e7Sopenharmony_ci}
438d05d8e7Sopenharmony_ci
448d05d8e7Sopenharmony_cistatic napi_module _module = {
458d05d8e7Sopenharmony_ci    .nm_version = 1,
468d05d8e7Sopenharmony_ci    .nm_flags = 0,
478d05d8e7Sopenharmony_ci    .nm_filename = nullptr,
488d05d8e7Sopenharmony_ci    .nm_register_func = Export,
498d05d8e7Sopenharmony_ci    .nm_modname = "file.recent",
508d05d8e7Sopenharmony_ci    .nm_priv = ((void *)0),
518d05d8e7Sopenharmony_ci    .reserved = {0}
528d05d8e7Sopenharmony_ci};
538d05d8e7Sopenharmony_ci
548d05d8e7Sopenharmony_ciextern "C" __attribute__((constructor)) void RegisterModule(void)
558d05d8e7Sopenharmony_ci{
568d05d8e7Sopenharmony_ci    napi_module_register(&_module);
578d05d8e7Sopenharmony_ci}
588d05d8e7Sopenharmony_ci} // namespace OHOS::AppFileService::ModuleFileUri