/*
 * Copyright (c) Huawei Device Co., Ltd. 2024-2025. All rights reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { LogDomain, LogHelper } from '@ohos/basicutils';
import { RdbStoreConfig } from '@ohos/frameworkwrapper';
import { DockItemInfo } from '../bean/DockItemInfo';
import GridLayoutItemInfo from '../bean/GridLayoutItemInfo';
import { rdbTaskPool } from './RdbTaskPool';

const TAG = 'HomeRdbStoreManager';
const log: LogHelper = LogHelper.getLogHelper(LogDomain.HOME, TAG);

/**
 * Wrapper class for gridLayoutInfo rdb interfaces.
 */
export class HomeRdbStoreManager {
  private mLayoutInfo: string = RdbStoreConfig.gridLayoutInfo.tableName;

  private constructor() {
  }

  private static sInstance: HomeRdbStoreManager;

  /**
   * simple db manager instance
   *
   * @return rdbStoreManager instance
   */
  public static getInstance(): HomeRdbStoreManager {
    if (HomeRdbStoreManager.sInstance == null) {
      HomeRdbStoreManager.sInstance = new HomeRdbStoreManager();
    }
    return HomeRdbStoreManager.sInstance;
  }

  /**
   * 查询普通桌面布局
   *
   * @returns 桌面布局信息
   */
  public async queryGridLayoutInfo(): Promise<GridLayoutItemInfo[]> {
    log.showInfo('queryGridLayoutInfo start');
    let result: GridLayoutItemInfo[] = await rdbTaskPool.queryGridLayoutInfo(this.mLayoutInfo, undefined);
    return result;
  }

  /**
   * 查询普通桌面Dock布局
   *
   * @returns 桌面布局信息
   */
  public async querySmartDock(): Promise<DockItemInfo[]> {
    log.showInfo('querySmartDock start');
    let dockItems: DockItemInfo[] = await rdbTaskPool.querySmartDock(this.mLayoutInfo);
    return dockItems;
  }
}