/**
* @content 记录功能组件
* @author 2019-09-16
*/
import { NativeModules } from 'react-native';
let RD = NativeModules.JSRecord;
import Fields from './Fields.js';
/**
* @class Record
* @description 记录
*/
export default class Record {
/**
* 构造一个新的 Record 对象。
* @memberOf Record
* @returns {Promise.<Record>}
*/
async createObj() {
try {
var { RecordId } = await RD.createObj();
var record = new Record();
record._MGRecordId = RecordId;
return record;
} catch (e) {
console.error(e);
}
}
/**
* 根据字段索引取字段值
* @memberOf Record
* @param fldIndex 字段索引
* @return {Promise<Field>}字段值
*/
async getFldValByIndex(fldIndex) {
try {
var { value } = await RD.getFldValByIndex(this._MGRecordId, fldIndex);
return value;
} catch (e) {
console.error(e);
}
}
/**
* 根据字段名取字段值
* @memberOf Record
* @param fldName 字段名
* @return {Promise<string>}字段值
*/
async getFldValByName(fldName) {
try {
var { value } = await RD.getFldValByName(this._MGRecordId, fldName);
return value;
} catch (e) {
console.error(e);
}
}
/**
* 根据字段索引设置字段值,暂时只支持FieldType.fldStr\fldFloat\fldDouble\fldLong\fldInt64\fldFloat\fldShort\fldTimeStamp\fldDate\fldTime类型
* <br/>
* 注:fldTimeStamp传递数值的时间戳;fldTime\fldDate可直接传递JS的Date对象
* @memberOf Record
* @param {Number} fldIndex 字段索引
* @param {Number|String|Object} 字段值(Object为Date)
* @return {Promise<Number>}大于0成功,否则失败
*
*/
async setFldValByIndex(fldIndex, newVal) {
try {
let params = newVal;
if(typeof newVal !== 'object'){
params = {value: newVal};
}else{
let time = newVal.getTime() + '';
params = {value: time};
}
return await RD.setFldValByIndex(this._MGRecordId, fldIndex, params);
} catch (e) {
console.error(e);
}
}
/**
* 根据字段名设置字段值,暂时只支持FieldType.fldStr\fldFloat\fldDouble\fldLong\fldInt64\fldFloat\fldShort\fldTimeStamp\fldDate\fldTime类型
* <br/>
* 注:fldTimeStamp传递数值的时间戳;fldTime\fldDate可直接传递JS的Date对象
* @memberOf Record
* @param {String} fldName 字段名
* @param {Number|String|Object} newVal 字段值(Object为Date)
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFldValByName(fldName, newVal) {
try {
let params = newVal;
if(typeof newVal !== 'object'){
params = {value: newVal};
}else{
let time = newVal.getTime() + '';
params = {value: time};
}
return await RD.setFldValByName(this._MGRecordId, fldName, params);
} catch (e) {
console.error(e);
}
}
/**
* 将字符串设置为字段值
* @memberOf Record
* @param fldIndex 字段索引
* @param newVal 字符串值
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFldFromStrOfIndex(fldIndex, newVal){
try {
return await RD.setFldFromStrOfIndex(this._MGRecordId, fldIndex, newVal);
} catch (e) {
console.error(e);
}
}
/**
* 将字符串设置为字段值
* @memberOf Record
* @param fldName 字段名
* @param newVal 字符串值
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFldFromStrOfName(fldName, newVal)
{
try {
return await RD.setFldFromStrOfName(this._MGRecordId, fldName, newVal);
} catch (e) {
console.error(e);
}
}
/**
* 判断字段值是否为NULL
* @memberOf Record
* @param fldIndex 字段索引
* @return {Promise<Number>}非0/0 :是/否
*/
async isFldNULLOfFldIndex(fldIndex) {
try {
return await RD.isFldNULLOfFldIndex(this._MGRecordId, fldIndex);
} catch (e) {
console.error(e);
}
}
/**
* 判断字段值是否为NULL
* @memberOf Record
* @param fldName 字段名
* @return {Promise<Number>}非0/0 :是/否
*/
async isFldNULLOfFldName(fldName) {
try {
return await RD.isFldNULLOfFldName(this._MGRecordId, fldName);
} catch (e) {
console.error(e);
}
}
/**
* 设置字段值为NULL
* @memberOf Record
* @param fldIndex 字段索引
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFldNULLByIndex(fldIndex) {
try {
return await RD.setFldNULLByIndex(this._MGRecordId, fldIndex);
} catch (e) {
console.error(e);
}
}
/**
* 设置字段值为NULL
* @memberOf Record
* @param fldName 字段名
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFldNULLByName(fldName) {
try {
return await RD.setFldNULLByName(this._MGRecordId, fldName);
} catch (e) {
console.error(e);
}
}
/**
* 设置所有字段值为NULL
* @memberOf Record
* @return {Promise<Number>}大于0成功,否则失败
*/
async setAllFldNULL() {
try {
return await RD.setAllFldNULL(this._MGRecordId);
} catch (e) {
console.error(e);
}
}
/**
* 获取字段类型
* @memberOf Record
* @param fldIndex 字段索引
* @return {Promise<Number>}字段类型
*/
async getFieldTypeByIndex(fldIndex) {
try {
return await RD.getFieldTypeByIndex(this._MGRecordId, fldIndex);
} catch (e) {
console.error(e);
}
}
/**
* 获取字段类型
* @memberOf Record
* @param fldName 字段名
* @return {Promise<Number>}字段类型
*/
async getFieldTypeByName(fldName) {
try {
return await RD.getFieldTypeByName(this._MGRecordId, fldName);
} catch (e) {
console.error(e);
}
}
/**
* 获取属性结构
* @memberOf Record
* @return {Promise<Fields>}Fields对象
*/
async getFields() {
try {
let { FieldsId } = await RD.getFields(this._MGRecordId);
var fields = new Fields();
fields._MGFieldsId = FieldsId;
return fields;
} catch (e) {
console.error(e);
}
}
/**
* 设置属性结构
* @memberOf Record
* @param Flds Fields对象
* @return {Promise<Number>}大于0成功,否则失败
*/
async setFields(Flds) {
try {
return await RD.setFields(this._MGRecordId, Flds._MGFieldsId);
} catch (e) {
console.error(e);
}
}
/**
* 释放缓冲区 如果调用SetFldValue设置Blob或者Binary类型的字段值,则必须调用该函数释放内存空间
* @memberOf Record
* @return {Promise<void>}
*/
async releaseBuffer() {
try {
await RD.releaseBuffer(this._MGRecordId);
} catch (e) {
console.error(e);
}
}
}