Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions rdbstore/src/main/ets/decoration/Entity.ets
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,27 @@
import { PropertyConverter } from '../model/relation/converter/ConvertParameter';
import { RdbConst } from '../RdbConst';

/**
* 表注解,无需传入参数
* @param target
*/
export function Table(target: object) {
let tableInfo: TableInfo = {
tableName: target['name']
}
target[RdbConst.TABLE] = tableInfo
}

/**
* 表注解
* @param tableInfo
* @returns
*/
export function Entity(tableInfo: TableInfo): ClassDecorator {
export function Entity(tableInfo: TableInfo = {}): ClassDecorator {
return (target: object) => {
if (tableInfo.tableName === undefined) {
tableInfo.tableName = target['name']
}
target[RdbConst.TABLE] = tableInfo
};
}
Expand All @@ -34,8 +48,9 @@ export function Entity(tableInfo: TableInfo): ClassDecorator {
export interface TableInfo {
/**
* 表名
* @default 被装饰的类名
*/
tableName: string
tableName?: string
/**
* 索引信息
*/
Expand Down
8 changes: 5 additions & 3 deletions rdbstore/src/main/ets/decoration/Weave.ets
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export namespace Weave {
*/
function generatePropertyInfo(tableInfo: TableInfo, entityCls: ClassConstructor<Object>) {
const tableMeta = new TableMetaInfo()
tableMeta.tableName = tableInfo.tableName
tableMeta.tableName = tableInfo.tableName!
tableMeta.entityCls = entityCls
tableMeta.index =
tableInfo.index?.map((item) => new IndexMetaInfo(item.name, item.columnName, item.unique)) ?? new Array
Expand Down Expand Up @@ -115,8 +115,10 @@ export namespace Weave {
*/
function ignoreNode(entityCls: ClassConstructor<Object>, propName: string) {
if (propName) {
const columnInfo: ColumnInfo = entityCls.prototype[RdbConst.COLUMN] ? entityCls.prototype[RdbConst.COLUMN][propName] : undefined
const embedded: EmbeddedInfo<Object> = entityCls.prototype[RdbConst.EMBEDDED] ? entityCls.prototype[RdbConst.EMBEDDED][propName] : undefined
const columnInfo: ColumnInfo =
entityCls.prototype[RdbConst.COLUMN] ? entityCls.prototype[RdbConst.COLUMN][propName] : undefined
const embedded: EmbeddedInfo<Object> =
entityCls.prototype[RdbConst.EMBEDDED] ? entityCls.prototype[RdbConst.EMBEDDED][propName] : undefined
if (!columnInfo && !embedded) {
return true
}
Expand Down
31 changes: 23 additions & 8 deletions rdbstore/src/ohosTest/ets/test/Ability.test.ets
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ import {
SampleEntity2,
SampleEntity20,
SampleEntity21,
SampleEntity22,
SampleEntity23,
SampleEntity3,
SampleEntity4,
SampleEntity5,
Expand Down Expand Up @@ -94,7 +96,10 @@ export default function abilityTest() {
let dao21: RdbDao<SampleEntity2>
let context: Context
let startTime = 1

let entities = [SampleEntity, SampleEntity2, SampleEntity3, SampleEntity4, SampleEntity5, SampleEntity6,
SampleEntity7, SampleEntity8, SampleEntity9, SampleEntity10, SampleEntity11, SampleEntity12, SampleEntity13,
SampleEntity14, SampleEntity15, SampleEntity16, SampleEntity17, SampleEntity18, SampleEntity19, SampleEntity20,
SampleEntity21, SampleEntity22, SampleEntity23];
beforeAll(async () => {
//start tested ability
const want: Want = {
Expand All @@ -112,9 +117,7 @@ export default function abilityTest() {
db = Rdb.databaseBuilder(context, {
version: 1,
dbName: 'stream.db',
entities: [SampleEntity, SampleEntity2, SampleEntity3, SampleEntity4, SampleEntity5, SampleEntity6,
SampleEntity7, SampleEntity8, SampleEntity9, SampleEntity10,SampleEntity11, SampleEntity12, SampleEntity13, SampleEntity14, SampleEntity15, SampleEntity16, SampleEntity17,
SampleEntity18, SampleEntity19, SampleEntity20, SampleEntity21],
entities,
migrations: [migration1_2, migration2_4],
encrypt: false,
securityLevel: relationalStore.SecurityLevel.S1,
Expand Down Expand Up @@ -187,7 +190,7 @@ export default function abilityTest() {
model3.age = 100
model2.name = 'batch'
model.name = 'batch-insert'
await dao.batchInsert([model,model, model2, model3])
await dao.batchInsert([model, model, model2, model3])
const list = await dao.queryAll()
const model1 = list.find(item => {
return item.id == 1
Expand Down Expand Up @@ -479,7 +482,7 @@ export default function abilityTest() {

await db.initTask
const tablesAfterDelete = await db.getAllTable()
expect(tablesAfterDelete.length).assertEqual(20)
expect(tablesAfterDelete.length).assertEqual(entities.length - 1)

done()
})
Expand Down Expand Up @@ -513,8 +516,8 @@ export default function abilityTest() {
// })
})

describe('feature',() => {
it('defaultColumnName', 0, async (done:Function) => {
describe('feature', () => {
it('defaultColumnName', 0, async (done: Function) => {
dao21 = await db.getDao(SampleEntity21)
let columns = await dao21.getAllColumns()
expect(columns.includes('id')).assertEqual(true)
Expand All @@ -523,5 +526,17 @@ export default function abilityTest() {
expect(columns.includes('bigId')).assertEqual(true)
done()
})

it('defaultTableName', 0, async (done: Function) => {
let dao22 = await db.getDao(SampleEntity22)
expect(dao22.config.tableName).assertEqual('SampleEntity22')
done()
})

it('tableDecorator', 0, async (done: Function) => {
let dao23 = await db.getDao(SampleEntity23)
expect(dao23.config.tableName).assertEqual('SampleEntity23')
done()
})
})
}
58 changes: 49 additions & 9 deletions rdbstore/src/ohosTest/ets/test/model/Entity.ets
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
BigIntToStringConvertor,
Columns,
ColumnType,
Table,
Embedded,
Entity
} from '../../../../../Index';
Expand Down Expand Up @@ -80,9 +81,7 @@ export class SampleEntity {
targetClass: Child
})
child: Child = new Child()

paramInt: number = 1

child2: Child = new Child()
}

Expand All @@ -91,7 +90,6 @@ export class Sample extends SampleEntity {
}



@Entity({
tableName: 'SampleEntity2',
index: [{ name: 'SampleEntity2idIndex', columnName: ['age', 'id'] },
Expand Down Expand Up @@ -149,7 +147,6 @@ export class SampleEntity3 {
}



@Entity({
tableName: 'SampleEntity4',
index: [{ name: 'SampleEntity4idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -202,7 +199,6 @@ export class SampleEntity5 {
}



@Entity({
tableName: 'SampleEntity6',
index: [{ name: 'SampleEntity6idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -255,7 +251,6 @@ export class SampleEntity7 {
}



@Entity({
tableName: 'SampleEntity8',
index: [{ name: 'SampleEntity8idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -308,7 +303,6 @@ export class SampleEntity9 {
}



@Entity({
tableName: 'SampleEntity10',
index: [{ name: 'SampleEntity10idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -361,7 +355,6 @@ export class SampleEntity11 {
}



@Entity({
tableName: 'SampleEntity12',
index: [{ name: 'SampleEntity12idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -414,7 +407,6 @@ export class SampleEntity13 {
}



@Entity({
tableName: 'SampleEntity14',
index: [{ name: 'SampleEntity14idIndex', columnName: ['age', 'id'] }]
Expand Down Expand Up @@ -615,4 +607,52 @@ export class SampleEntity21 {
targetClass: Child
})
child: Child = new Child()
}

/**
* 用于Entity装饰器tableName属性缺省单元测试
*/
@Entity()
export class SampleEntity22 {
@Columns({
type: ColumnType.INTEGER,
isPrimaryKey: true,
autoincrement: true
})
id: number | null = null;
@Columns({ type: ColumnType.INTEGER })
age: number = -1
@Columns({ type: ColumnType.TEXT })
name: string = ''
@Columns({ type: ColumnType.TEXT, convertor: BigIntToStringConvertor })
bigId: bigint = 1n
@Embedded({
prefix: '',
targetClass: Child
})
child: Child = new Child()
}

/**
* 用于Table装饰器tableName属性缺省单元测试
*/
@Table
export class SampleEntity23 {
@Columns({
type: ColumnType.INTEGER,
isPrimaryKey: true,
autoincrement: true
})
id: number | null = null;
@Columns({ type: ColumnType.INTEGER })
age: number = -1
@Columns({ type: ColumnType.TEXT })
name: string = ''
@Columns({ type: ColumnType.TEXT, convertor: BigIntToStringConvertor })
bigId: bigint = 1n
@Embedded({
prefix: '',
targetClass: Child
})
child: Child = new Child()
}