using DataLoader.Model;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
namespace DataLoader.CS
{
///
/// 数据库帮助类
///
public class DBHelper
{
// id, eventid, metaid, verid, name, type, guid, path, sizes, tab, rows, create_user, create_time, update_user, update_time, bak, geom, layer, depcode, dircode, ismeta, sensortype, acq_time, resolution, gridsize, coor_sys, epsg, h_datum, mata_type, bands, band_type, ct
private const string insertMeta = "insert into lf.sys_meta (eventid, metaid, verid, name, type, guid, path, sizes, tab, rows, create_user, create_time, bak, geom, layer, depcode, dircode, ismeta, sensortype, acq_time, resolution, gridsize, coor_sys, epsg, h_datum, mata_type, bands, band_type, ct, min, max) values (@eventid, @metaid, @verid, @name, @type, @guid, @path, @sizes, @tab, @rows, @create_user, now(), @bak, {0}, @layer, @depcode, @dircode, @ismeta, @sensortype, @acq_time, @resolution, @gridsize, @coor_sys, @epsg, @h_datum, @mata_type, @bands, @band_type, @ct, @min, @max) returning id";
///
/// 插入元数据
///
public static int InsertMeta(SysMeta meta)
{
string sql = string.Format(insertMeta, string.IsNullOrEmpty(meta.geom) ? "null" : meta.geom);
List args = Tools.GetParams(sql, meta);
return Tools.DBHelper.GetIntScalar(sql, args.ToArray());
}
///
/// 插入元数据
///
public static int InsertMetas(List list)
{
PostgreHelper db = Tools.DBHelper;
int count = 0;
foreach (SysMeta meta in list)
{
string sql = string.Format(insertMeta, string.IsNullOrEmpty(meta.geom) ? "null" : meta.geom);
List args = Tools.GetParams(sql, meta);
int id = db.GetIntScalar(sql, args.ToArray());
if (id > 0) count++;
}
return count;
}
///
/// 根据GUID查询路径
///
public static string GetFilePathByGuid(string guid)
{
string sql = "select path from lf.sys_meta where guid = @guid limit 1";
DbParameter dp = new NpgsqlParameter("@guid", guid);
object obj = Tools.DBHelper.GetScalar(sql, dp);
return obj == null ? null : obj.ToString();
}
///
/// 文件是/否存在
///
public static bool IsFileExists(string guid)
{
string sql = "select count(*) from lf.sys_meta where guid = @guid";
DbParameter dp = new NpgsqlParameter("@guid", guid);
object obj = Tools.DBHelper.GetScalar(sql, dp);
return obj != null && Convert.ToInt32(obj) > 0;
}
///
/// 获取目录列表
///
public static List GetDirList()
{
string sql = "select a.*, fn_get_fullname(a.code, 2) fullName from lf.sys_dir a order by pid, order_num, id";
DataTable dt = Tools.DBHelper.GetDataTable(sql);
if (null == dt || dt.Rows.Count == 0) return null;
List list = ModelHandler.FillModel(dt);
return list;
}
///
/// 根据用户ID查询单位编码
///
public static string SelectDepCodeByUid(int userId)
{
string sql = string.Format("select depcode from lf.sys_user where id = {0}", userId);
object obj = Tools.DBHelper.GetScalar(sql);
return null == obj ? null : obj.ToString();
}
}
}