@typetron/framework 0.5.0 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Database/EntityProxyHandler.js +2 -2
- package/build/Database/EntityProxyHandler.js.map +1 -1
- package/package.json +4 -7
- package/.eslintrc-old.js +0 -208
- package/Cache/Cache.ts +0 -13
- package/Cache/Stores/DatabaseStore.ts +0 -120
- package/Cache/Stores/FileStore.ts +0 -69
- package/Cache/Stores/MemoryStore.ts +0 -71
- package/Cache/index.ts +0 -5
- package/Cache/types.ts +0 -4
- package/Container/ClassResolver.ts +0 -106
- package/Container/Container.ts +0 -144
- package/Container/Contracts.ts +0 -3
- package/Container/Decorators.ts +0 -20
- package/Container/Metadata.ts +0 -16
- package/Container/Resolver.ts +0 -27
- package/Container/index.ts +0 -5
- package/Database/Clauses/Where.ts +0 -0
- package/Database/Connection.ts +0 -52
- package/Database/Decorators.ts +0 -142
- package/Database/Drivers/DatabaseDriver.ts +0 -37
- package/Database/Drivers/MySQL/Alter/index.ts +0 -55
- package/Database/Drivers/MySQL/ColumnDefinition.ts +0 -16
- package/Database/Drivers/MySQL/Create.ts +0 -47
- package/Database/Drivers/MySQL/MysqlDriver.ts +0 -123
- package/Database/Drivers/MySQL/Schema.ts +0 -82
- package/Database/Drivers/MySQL/index.ts +0 -13
- package/Database/Drivers/SQL/Schema.ts +0 -73
- package/Database/Drivers/SQL/Statements/Alter.ts +0 -22
- package/Database/Drivers/SQL/Statements/BaseStatement.ts +0 -55
- package/Database/Drivers/SQL/Statements/Delete.ts +0 -20
- package/Database/Drivers/SQL/Statements/Insert.ts +0 -24
- package/Database/Drivers/SQL/Statements/Select.ts +0 -55
- package/Database/Drivers/SQL/Statements/Update.ts +0 -33
- package/Database/Drivers/SQL/index.ts +0 -8
- package/Database/Drivers/SQLite/Create.ts +0 -45
- package/Database/Drivers/SQLite/Schema.ts +0 -54
- package/Database/Drivers/SQLite/SqliteDriver.ts +0 -144
- package/Database/Drivers/SQLite/index.ts +0 -15
- package/Database/Drivers/SchemaContract.ts +0 -11
- package/Database/Drivers/Statement.ts +0 -16
- package/Database/Drivers/index.ts +0 -4
- package/Database/Entity.ts +0 -377
- package/Database/EntityNotFoundError.ts +0 -5
- package/Database/EntityProxyHandler.ts +0 -43
- package/Database/EntityQuery.ts +0 -197
- package/Database/Expression.ts +0 -3
- package/Database/Fields.ts +0 -816
- package/Database/Helpers.ts +0 -12
- package/Database/List.ts +0 -71
- package/Database/Migrations/Migration.ts +0 -10
- package/Database/Migrations/MigrationHistory.ts +0 -20
- package/Database/Migrations/Migrator.ts +0 -122
- package/Database/Migrations/index.ts +0 -3
- package/Database/ORM/BaseRelationship.ts +0 -10
- package/Database/Query.ts +0 -374
- package/Database/Seeders/Seeder.ts +0 -3
- package/Database/Seeders/SeederManager.ts +0 -27
- package/Database/Seeders/index.ts +0 -2
- package/Database/StringExpression.ts +0 -9
- package/Database/Types.ts +0 -165
- package/Database/index.ts +0 -23
- package/Encryption/index.ts +0 -51
- package/Forms/Decorators.ts +0 -29
- package/Forms/Form.ts +0 -70
- package/Forms/FormFields.ts +0 -36
- package/Forms/index.ts +0 -3
- package/Framework/App.ts +0 -10
- package/Framework/Application.ts +0 -118
- package/Framework/Auth/Auth.ts +0 -122
- package/Framework/Auth/Authenticatable.ts +0 -9
- package/Framework/Auth/User.ts +0 -27
- package/Framework/Auth/index.ts +0 -29
- package/Framework/Config/AppConfig.ts +0 -25
- package/Framework/Config/AuthConfig.ts +0 -9
- package/Framework/Config/BaseConfig.ts +0 -9
- package/Framework/Config/CacheConfig.ts +0 -38
- package/Framework/Config/DatabaseConfig.ts +0 -21
- package/Framework/Config/MailConfig.ts +0 -30
- package/Framework/Config/index.ts +0 -6
- package/Framework/Middleware/AuthMiddleware.ts +0 -31
- package/Framework/Middleware/CorsMiddleware.ts +0 -32
- package/Framework/Middleware/StaticAssetsMiddleware.ts +0 -76
- package/Framework/Middleware/index.ts +0 -2
- package/Framework/Provider.ts +0 -9
- package/Framework/Providers/CacheProvider.ts +0 -28
- package/Framework/Providers/DatabaseProvider.ts +0 -36
- package/Framework/Providers/MailProvider.ts +0 -31
- package/Framework/Providers/WebsocketsProvider.ts +0 -120
- package/Framework/Resolvers/AuthResolver.ts +0 -23
- package/Framework/Resolvers/EntityResolver.ts +0 -41
- package/Framework/Resolvers/FormResolver.ts +0 -37
- package/Framework/RootDir.ts +0 -1
- package/Framework/index.ts +0 -8
- package/Frontend/Angular/index.ts +0 -24
- package/Frontend/Websockets/index.ts +0 -86
- package/Mail/MailAddress.ts +0 -4
- package/Mail/MailTransport.ts +0 -6
- package/Mail/Mailable.ts +0 -16
- package/Mail/Mailer.ts +0 -27
- package/Mail/PendingMail.ts +0 -68
- package/Mail/SentMessage.ts +0 -20
- package/Mail/Transports/MemoryTransport.ts +0 -13
- package/Mail/Transports/SendGridTransport.ts +0 -95
- package/Mail/index.ts +0 -3
- package/Models/Model.ts +0 -41
- package/Models/index.ts +0 -54
- package/Router/BaseController.ts +0 -7
- package/Router/Decorators.ts +0 -224
- package/Router/Guard.ts +0 -10
- package/Router/Http/Contracts.ts +0 -4
- package/Router/Http/ErrorHandler.ts +0 -45
- package/Router/Http/ErrorHandlerInterface.ts +0 -6
- package/Router/Http/Errors/HttpError.ts +0 -15
- package/Router/Http/Handler.ts +0 -183
- package/Router/Http/HttpRoute.ts +0 -110
- package/Router/Http/Middleware.ts +0 -7
- package/Router/Http/Request.ts +0 -225
- package/Router/Http/Response.ts +0 -35
- package/Router/Http/index.ts +0 -85
- package/Router/Metadata.ts +0 -34
- package/Router/Middleware.ts +0 -16
- package/Router/Request.ts +0 -65
- package/Router/Route.ts +0 -16
- package/Router/RouteNotFoundError.ts +0 -5
- package/Router/Router.ts +0 -35
- package/Router/Servers/index.ts +0 -6
- package/Router/Servers/node.ts +0 -49
- package/Router/Servers/uNetworking.ts +0 -151
- package/Router/Websockets/Handler.ts +0 -82
- package/Router/Websockets/Middleware.ts +0 -7
- package/Router/Websockets/Request.ts +0 -3
- package/Router/Websockets/WebsocketRoute.ts +0 -61
- package/Router/Websockets/index.ts +0 -57
- package/Router/Websockets/types.ts +0 -23
- package/Router/index.ts +0 -6
- package/Storage/File.ts +0 -30
- package/Storage/Image.ts +0 -19
- package/Storage/InvalidImage.ts +0 -3
- package/Storage/Storage.ts +0 -98
- package/Storage/index.ts +0 -4
- package/Storage/utils.ts +0 -18
- package/Support/Array.ts +0 -184
- package/Support/Math.ts +0 -12
- package/Support/Metadata.ts +0 -31
- package/Support/String.ts +0 -38
- package/Support/index.ts +0 -19
- package/Support/utils.ts +0 -7
- package/Testing/TestCase.ts +0 -193
- package/Validation/Rule.ts +0 -9
- package/Validation/RuleInterface.ts +0 -10
- package/Validation/Rules/Email.ts +0 -20
- package/Validation/Rules/FileExtension.ts +0 -21
- package/Validation/Rules/MaxLength.ts +0 -17
- package/Validation/Rules/MinLength.ts +0 -18
- package/Validation/Rules/Optional.ts +0 -18
- package/Validation/Rules/Required.ts +0 -29
- package/Validation/Validator.ts +0 -7
- package/Validation/index.ts +0 -12
- package/benchmark-index.js +0 -20
- package/benchmark.ts +0 -47
- package/tests/Cache/DatabaseStoreTest.ts +0 -110
- package/tests/Cache/FileStoreTest.ts +0 -93
- package/tests/Cache/MemoryStoreTest.ts +0 -92
- package/tests/Container/ContainerTest.ts +0 -336
- package/tests/Database/Drivers/MySQL/AlterTest.ts +0 -100
- package/tests/Database/Drivers/MySQL/CreateTest.ts +0 -39
- package/tests/Database/Drivers/MysqlDriverTest.ts +0 -140
- package/tests/Database/Drivers/SqliteDriverTest.ts +0 -126
- package/tests/Database/Entities/Article.ts +0 -21
- package/tests/Database/Entities/Profile.ts +0 -21
- package/tests/Database/Entities/Role.ts +0 -15
- package/tests/Database/Entities/User.ts +0 -35
- package/tests/Database/EntityRelationshipsTest.ts +0 -475
- package/tests/Database/EntityTest.ts +0 -202
- package/tests/Database/Migrations/RunnerTest.ts +0 -96
- package/tests/Database/Migrations/migrations/1.createUserTable.ts +0 -12
- package/tests/Database/Migrations/migrations/2.createArticlesTable.ts +0 -12
- package/tests/Database/QueryTest.ts +0 -573
- package/tests/Database/SchemaTest.ts +0 -32
- package/tests/Database/Seeders/RunnerTest.ts +0 -30
- package/tests/Database/Seeders/seeders/RandomSeeder.ts +0 -10
- package/tests/Database/utils.ts +0 -16
- package/tests/Forms/FormsTest.ts +0 -59
- package/tests/Framework/Middleware/StaticAssetsMiddlewareTest.ts +0 -129
- package/tests/Framework/Resolvers/EntityResolverTest.ts +0 -48
- package/tests/Framework/Router/RouterTest.ts +0 -33
- package/tests/Mail/MailerTest.ts +0 -76
- package/tests/Model/ModelTest.ts +0 -183
- package/tests/Router/HttpHandlerTest.ts +0 -72
- package/tests/Router/RequestTest.ts +0 -77
- package/tests/Router/WebSocketsHandlerTest.ts +0 -51
- package/tests/Storage/StorageTest.ts +0 -97
- package/tests/Support/ArrayTest.ts +0 -167
- package/tests/Support/StringTest.ts +0 -18
- package/tests/Validation/RulesTest.ts +0 -54
- package/types.d.ts +0 -8
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { expectQuery } from '@Typetron/tests/Database/utils'
|
|
3
|
-
import { AddColumn, AddConstraint, Alter, Constraints, DropColumn, ModifyColumn } from '@Typetron/Database/Drivers/MySQL/Alter'
|
|
4
|
-
|
|
5
|
-
@suite
|
|
6
|
-
class AlterTest {
|
|
7
|
-
|
|
8
|
-
@test
|
|
9
|
-
async addColumn() {
|
|
10
|
-
const addAge = new AddColumn({
|
|
11
|
-
name: 'age',
|
|
12
|
-
type: 'integer',
|
|
13
|
-
})
|
|
14
|
-
const statement = new Alter('test', [addAge])
|
|
15
|
-
expectQuery(statement).toEqual('ALTER TABLE test ADD age integer')
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@test
|
|
19
|
-
async addPrimaryKeyColumn() {
|
|
20
|
-
const addAge = new AddColumn({
|
|
21
|
-
name: 'age',
|
|
22
|
-
type: 'integer',
|
|
23
|
-
})
|
|
24
|
-
const statement = new Alter('test', [addAge])
|
|
25
|
-
expectQuery(statement).toEqual('ALTER TABLE test ADD age integer')
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@test
|
|
29
|
-
async dropColumn() {
|
|
30
|
-
const age = new DropColumn('age')
|
|
31
|
-
const statement = new Alter('test', [age])
|
|
32
|
-
expectQuery(statement).toEqual('ALTER TABLE test DROP COLUMN age')
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@test
|
|
36
|
-
async ModifyColumn() {
|
|
37
|
-
const age = new ModifyColumn({
|
|
38
|
-
name: 'age',
|
|
39
|
-
type: 'integer',
|
|
40
|
-
})
|
|
41
|
-
const statement = new Alter('test', [age])
|
|
42
|
-
expectQuery(statement).toEqual('ALTER TABLE test MODIFY age integer')
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@test
|
|
46
|
-
async ModifyColumnWithAutoIncrement() {
|
|
47
|
-
const age = new ModifyColumn({
|
|
48
|
-
name: 'age',
|
|
49
|
-
type: 'integer',
|
|
50
|
-
autoIncrement: 1
|
|
51
|
-
})
|
|
52
|
-
const statement = new Alter('test', [age])
|
|
53
|
-
expectQuery(statement).toEqual('ALTER TABLE test MODIFY age integer AUTO_INCREMENT')
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@test
|
|
57
|
-
async addPrimaryKeyConstraint() {
|
|
58
|
-
const age = new AddConstraint({
|
|
59
|
-
name: 'age',
|
|
60
|
-
type: 'integer',
|
|
61
|
-
}, Constraints.PrimaryKey)
|
|
62
|
-
const statement = new Alter('test', [age])
|
|
63
|
-
expectQuery(statement).toEqual('ALTER TABLE test ADD CONSTRAINT PRIMARY KEY (age)')
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@test
|
|
67
|
-
async addForeignKeyConstraint() {
|
|
68
|
-
const age = new AddConstraint({
|
|
69
|
-
name: 'age',
|
|
70
|
-
type: 'integer',
|
|
71
|
-
}, Constraints.ForeignKey)
|
|
72
|
-
const statement = new Alter('test', [age])
|
|
73
|
-
expectQuery(statement).toEqual('ALTER TABLE test ADD CONSTRAINT FOREIGN KEY (age)')
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@test
|
|
77
|
-
async altersMultipleColumns() {
|
|
78
|
-
const addAge = new AddColumn({
|
|
79
|
-
name: 'age',
|
|
80
|
-
type: 'integer',
|
|
81
|
-
})
|
|
82
|
-
const dropName = new DropColumn('age')
|
|
83
|
-
const dropTitle = new DropColumn('title')
|
|
84
|
-
|
|
85
|
-
const addAddress = new AddColumn({
|
|
86
|
-
name: 'address',
|
|
87
|
-
type: 'varchar(255)',
|
|
88
|
-
})
|
|
89
|
-
const statement = new Alter('test', [addAge, dropName, dropTitle, addAddress])
|
|
90
|
-
expectQuery(statement).toEqual(`
|
|
91
|
-
ALTER TABLE test
|
|
92
|
-
ADD age integer,
|
|
93
|
-
DROP
|
|
94
|
-
COLUMN age,
|
|
95
|
-
DROP
|
|
96
|
-
COLUMN title,
|
|
97
|
-
ADD address varchar(255)
|
|
98
|
-
`)
|
|
99
|
-
}
|
|
100
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { Create } from '@Typetron/Database/Drivers/MySQL/Create'
|
|
3
|
-
import { expectQuery } from '@Typetron/tests/Database/utils'
|
|
4
|
-
|
|
5
|
-
@suite
|
|
6
|
-
class CreateTest {
|
|
7
|
-
|
|
8
|
-
@test
|
|
9
|
-
async createsEmptyTable() {
|
|
10
|
-
const statement = new Create('test')
|
|
11
|
-
expectQuery(statement).toEqual('CREATE TABLE test ( )')
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
@test
|
|
15
|
-
async createsTableWithIntegerColumn() {
|
|
16
|
-
const statement = new Create('test', [{
|
|
17
|
-
name: 'age',
|
|
18
|
-
type: 'integer',
|
|
19
|
-
}])
|
|
20
|
-
expectQuery(statement).toEqual('CREATE TABLE test ( age integer )')
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
@test
|
|
24
|
-
async createsTableWithPrimaryAutoIncrementColumn() {
|
|
25
|
-
const statement = new Create('test', [{
|
|
26
|
-
name: 'id',
|
|
27
|
-
type: 'integer',
|
|
28
|
-
primaryKey: true,
|
|
29
|
-
autoIncrement: 1
|
|
30
|
-
}])
|
|
31
|
-
expectQuery(statement).toEqual(`
|
|
32
|
-
CREATE TABLE test
|
|
33
|
-
(
|
|
34
|
-
id integer AUTO_INCREMENT,
|
|
35
|
-
PRIMARY KEY (id)
|
|
36
|
-
)
|
|
37
|
-
`)
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { BelongsTo, Column, Entity, HasOne, ID, MysqlDriver, Options, PrimaryColumn, Relation } from '@Typetron/Database'
|
|
3
|
-
import { anyString, instance, mock, when } from 'ts-mockito'
|
|
4
|
-
import { Schema } from '@Typetron/Database/Drivers/MySQL/Schema'
|
|
5
|
-
import { expectQuery } from '../utils'
|
|
6
|
-
import { DatabaseDriver } from '@Typetron/Database/Drivers/DatabaseDriver'
|
|
7
|
-
|
|
8
|
-
@suite
|
|
9
|
-
class MysqlDriverTest {
|
|
10
|
-
|
|
11
|
-
driver: DatabaseDriver
|
|
12
|
-
schema: Schema
|
|
13
|
-
query: string
|
|
14
|
-
|
|
15
|
-
async before() {
|
|
16
|
-
this.driver = mock(MysqlDriver)
|
|
17
|
-
this.schema = new Schema(instance(this.driver))
|
|
18
|
-
when(this.driver.run(anyString())).thenCall((query: string) => this.query = query)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@test
|
|
22
|
-
async createsEmptyTable() {
|
|
23
|
-
@Options()
|
|
24
|
-
class Test extends Entity {}
|
|
25
|
-
|
|
26
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
27
|
-
expectQuery(this.query).toEqual('CREATE TABLE test ( )')
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@test
|
|
31
|
-
async createsTableWithIntegerColumn() {
|
|
32
|
-
class Test extends Entity {
|
|
33
|
-
@Column()
|
|
34
|
-
age: number
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
38
|
-
expectQuery(this.query).toEqual('CREATE TABLE test ( age integer )')
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@test
|
|
42
|
-
async createsTableWithPrimaryAutoIncrementColumn() {
|
|
43
|
-
class Test extends Entity {
|
|
44
|
-
@PrimaryColumn()
|
|
45
|
-
id: ID
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
49
|
-
expectQuery(this.query).toEqual(`
|
|
50
|
-
CREATE TABLE test
|
|
51
|
-
(
|
|
52
|
-
id integer AUTO_INCREMENT,
|
|
53
|
-
PRIMARY KEY (id)
|
|
54
|
-
)
|
|
55
|
-
`)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@test
|
|
59
|
-
async createsTableWithForeignColumn() {
|
|
60
|
-
class User extends Entity {
|
|
61
|
-
@Column()
|
|
62
|
-
@Relation(() => Image, 'user')
|
|
63
|
-
image: HasOne<Image>
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
class Image extends Entity {
|
|
67
|
-
@Column()
|
|
68
|
-
@Relation(() => User, 'image')
|
|
69
|
-
user: BelongsTo<User>
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
await this.schema.synchronize([Image].pluck('metadata'))
|
|
73
|
-
expectQuery(this.query).toEqual(`
|
|
74
|
-
CREATE TABLE image
|
|
75
|
-
(
|
|
76
|
-
userId integer
|
|
77
|
-
)
|
|
78
|
-
`)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@test
|
|
82
|
-
async altersTable() {
|
|
83
|
-
when(this.driver.tableExists(anyString())).thenReturn(Promise.resolve(true))
|
|
84
|
-
when(this.driver.tableColumns(anyString())).thenReturn(Promise.resolve([
|
|
85
|
-
{
|
|
86
|
-
name: 'column2',
|
|
87
|
-
type: 'integer'
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: 'column3',
|
|
91
|
-
type: 'integer'
|
|
92
|
-
},
|
|
93
|
-
]))
|
|
94
|
-
|
|
95
|
-
class User extends Entity {
|
|
96
|
-
@Column()
|
|
97
|
-
column1: number
|
|
98
|
-
|
|
99
|
-
@Column()
|
|
100
|
-
column2: string
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
await this.schema.synchronize([User].pluck('metadata'))
|
|
104
|
-
|
|
105
|
-
expectQuery(this.query).toEqual(`
|
|
106
|
-
ALTER TABLE user
|
|
107
|
-
ADD column1 integer,
|
|
108
|
-
MODIFY column2 varchar(255),
|
|
109
|
-
DROP
|
|
110
|
-
COLUMN column3
|
|
111
|
-
`)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@test
|
|
115
|
-
async altersTableAddPrimaryKey() {
|
|
116
|
-
when(this.driver.tableExists(anyString())).thenReturn(Promise.resolve(true))
|
|
117
|
-
when(this.driver.tableColumns(anyString())).thenReturn(Promise.resolve([]))
|
|
118
|
-
|
|
119
|
-
class User extends Entity {
|
|
120
|
-
@PrimaryColumn()
|
|
121
|
-
id: ID
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const queries: string[] = []
|
|
125
|
-
when(this.driver.run(anyString())).thenCall((query: string) => queries.push(query))
|
|
126
|
-
|
|
127
|
-
await this.schema.synchronize([User].pluck('metadata'))
|
|
128
|
-
|
|
129
|
-
expectQuery(queries[0]).toEqual(`
|
|
130
|
-
ALTER TABLE user
|
|
131
|
-
ADD id integer
|
|
132
|
-
`)
|
|
133
|
-
|
|
134
|
-
expectQuery(queries[1]).toEqual(`
|
|
135
|
-
ALTER TABLE user
|
|
136
|
-
ADD CONSTRAINT PRIMARY KEY (id),
|
|
137
|
-
MODIFY id integer AUTO_INCREMENT
|
|
138
|
-
`)
|
|
139
|
-
}
|
|
140
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { BelongsTo, Column, Entity, HasOne, ID, Options, PrimaryColumn, Relation, SqliteDriver } from '@Typetron/Database'
|
|
3
|
-
import { anyString, instance, mock, when } from '@Typetron/node_modules/ts-mockito'
|
|
4
|
-
import { Schema } from '@Typetron/Database/Drivers/SQLite/Schema'
|
|
5
|
-
import { expectQuery } from '@Typetron/tests/Database/utils'
|
|
6
|
-
import { expect } from 'chai'
|
|
7
|
-
import { DatabaseDriver } from '@Typetron/Database/Drivers/DatabaseDriver'
|
|
8
|
-
|
|
9
|
-
@suite
|
|
10
|
-
class SqliteDriverTest {
|
|
11
|
-
|
|
12
|
-
driver: DatabaseDriver
|
|
13
|
-
schema: Schema
|
|
14
|
-
query: string
|
|
15
|
-
|
|
16
|
-
async before() {
|
|
17
|
-
this.driver = mock(SqliteDriver)
|
|
18
|
-
this.schema = new Schema(instance(this.driver))
|
|
19
|
-
when(this.driver.run(anyString())).thenCall((query: string) => this.query = query)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@test
|
|
23
|
-
async createsEmptyTable() {
|
|
24
|
-
@Options()
|
|
25
|
-
class Test extends Entity {}
|
|
26
|
-
|
|
27
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
28
|
-
expectQuery(this.query).toEqual('CREATE TABLE test ( )')
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@test
|
|
32
|
-
async createsTableWithIntegerColumn() {
|
|
33
|
-
class Test extends Entity {
|
|
34
|
-
@Column()
|
|
35
|
-
age: number
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
39
|
-
expectQuery(this.query).toEqual('CREATE TABLE test ( age integer )')
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@test
|
|
43
|
-
async createsTableWithPrimaryAutoIncrementColumn() {
|
|
44
|
-
class Test extends Entity {
|
|
45
|
-
@PrimaryColumn()
|
|
46
|
-
id: ID
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
await this.schema.synchronize([Test].pluck('metadata'))
|
|
50
|
-
expectQuery(this.query).toEqual(`
|
|
51
|
-
CREATE TABLE test
|
|
52
|
-
(
|
|
53
|
-
id integer PRIMARY KEY AUTOINCREMENT
|
|
54
|
-
)
|
|
55
|
-
`)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@test
|
|
59
|
-
async createsTableWithForeignColumn() {
|
|
60
|
-
class User extends Entity {
|
|
61
|
-
@Column()
|
|
62
|
-
@Relation(() => Image, 'user')
|
|
63
|
-
image: HasOne<Image>
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
class Image extends Entity {
|
|
67
|
-
@Column()
|
|
68
|
-
@Relation(() => User, 'image')
|
|
69
|
-
user: BelongsTo<User>
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
await this.schema.synchronize([Image].pluck('metadata'))
|
|
73
|
-
expectQuery(this.query).toEqual(`
|
|
74
|
-
CREATE TABLE image
|
|
75
|
-
(
|
|
76
|
-
userId integer
|
|
77
|
-
)
|
|
78
|
-
`)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@test
|
|
82
|
-
async altersTable() {
|
|
83
|
-
when(this.driver.tableExists(anyString())).thenReturn(Promise.resolve(true))
|
|
84
|
-
when(this.driver.tableColumns(anyString())).thenReturn(Promise.resolve([
|
|
85
|
-
{
|
|
86
|
-
name: 'column2',
|
|
87
|
-
type: 'integer'
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: 'column3',
|
|
91
|
-
type: 'integer'
|
|
92
|
-
},
|
|
93
|
-
]))
|
|
94
|
-
|
|
95
|
-
const queries: string[] = []
|
|
96
|
-
when(this.driver.run(anyString())).thenCall((query: string) => queries.push(query))
|
|
97
|
-
|
|
98
|
-
class User extends Entity {
|
|
99
|
-
@Column()
|
|
100
|
-
column1: number
|
|
101
|
-
|
|
102
|
-
@Column()
|
|
103
|
-
column2: string
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
await this.schema.synchronize([User].pluck('metadata'))
|
|
107
|
-
|
|
108
|
-
expect(queries).to.have.length(4)
|
|
109
|
-
expectQuery(queries[0]).toEqual(`
|
|
110
|
-
CREATE TABLE user_alter_tmp
|
|
111
|
-
(
|
|
112
|
-
column1 integer,
|
|
113
|
-
column2 varchar(255)
|
|
114
|
-
)
|
|
115
|
-
`)
|
|
116
|
-
|
|
117
|
-
expectQuery(queries[1]).toEqual(`
|
|
118
|
-
INSERT INTO user_alter_tmp(column2)
|
|
119
|
-
SELECT column2
|
|
120
|
-
FROM user
|
|
121
|
-
`)
|
|
122
|
-
|
|
123
|
-
expectQuery(queries[2]).toEqual(`DROP TABLE user`)
|
|
124
|
-
expectQuery(queries[3]).toEqual(`ALTER TABLE user_alter_tmp RENAME TO user`)
|
|
125
|
-
}
|
|
126
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Column, Entity, PrimaryColumn, Relation } from '../../../Database'
|
|
2
|
-
import { User } from './User'
|
|
3
|
-
import { BelongsTo } from '../../../Database/Fields'
|
|
4
|
-
|
|
5
|
-
export class Article extends Entity {
|
|
6
|
-
|
|
7
|
-
@PrimaryColumn()
|
|
8
|
-
id: number
|
|
9
|
-
|
|
10
|
-
@Column()
|
|
11
|
-
title: string
|
|
12
|
-
|
|
13
|
-
@Column()
|
|
14
|
-
content: string
|
|
15
|
-
|
|
16
|
-
@Column()
|
|
17
|
-
published: boolean = false
|
|
18
|
-
|
|
19
|
-
@Relation(() => User, 'articles')
|
|
20
|
-
author: BelongsTo<User>
|
|
21
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Column, CreatedAt, Entity, PrimaryColumn, Relation, UpdatedAt } from '../../../Database'
|
|
2
|
-
import { User } from './User'
|
|
3
|
-
import { BelongsTo } from '../../../Database/Fields'
|
|
4
|
-
|
|
5
|
-
export class Profile extends Entity {
|
|
6
|
-
|
|
7
|
-
@PrimaryColumn()
|
|
8
|
-
id: number
|
|
9
|
-
|
|
10
|
-
@Relation(() => User, 'profile')
|
|
11
|
-
user: BelongsTo<User>
|
|
12
|
-
|
|
13
|
-
@Column()
|
|
14
|
-
address: string
|
|
15
|
-
|
|
16
|
-
@CreatedAt()
|
|
17
|
-
createdAt: Date
|
|
18
|
-
|
|
19
|
-
@UpdatedAt()
|
|
20
|
-
updatedAt: Date
|
|
21
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Column, Entity, PrimaryColumn, Relation } from '../../../Database'
|
|
2
|
-
import { User } from './User'
|
|
3
|
-
import { BelongsToMany } from '../../../Database/Fields'
|
|
4
|
-
|
|
5
|
-
export class Role extends Entity {
|
|
6
|
-
|
|
7
|
-
@PrimaryColumn()
|
|
8
|
-
id: number
|
|
9
|
-
|
|
10
|
-
@Column()
|
|
11
|
-
name: string
|
|
12
|
-
|
|
13
|
-
@Relation(() => User, 'roles')
|
|
14
|
-
users: BelongsToMany<User>
|
|
15
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Column, CreatedAt, Entity, Options, PrimaryColumn, Relation, UpdatedAt } from '../../../Database'
|
|
2
|
-
import { Article } from './Article'
|
|
3
|
-
import { Role } from './Role'
|
|
4
|
-
import { Profile } from './Profile'
|
|
5
|
-
import { BelongsToMany, HasMany, HasOne } from '../../../Database/Fields'
|
|
6
|
-
|
|
7
|
-
@Options({
|
|
8
|
-
table: 'users'
|
|
9
|
-
})
|
|
10
|
-
export class User extends Entity {
|
|
11
|
-
|
|
12
|
-
@PrimaryColumn()
|
|
13
|
-
id: number
|
|
14
|
-
|
|
15
|
-
@Column()
|
|
16
|
-
name: string
|
|
17
|
-
|
|
18
|
-
@Column()
|
|
19
|
-
email: string
|
|
20
|
-
|
|
21
|
-
@Relation(() => Profile, 'user')
|
|
22
|
-
profile: HasOne<Profile>
|
|
23
|
-
|
|
24
|
-
@Relation(() => Article, 'author')
|
|
25
|
-
articles: HasMany<Article>
|
|
26
|
-
|
|
27
|
-
@Relation(() => Role, 'users')
|
|
28
|
-
roles: BelongsToMany<Role>
|
|
29
|
-
|
|
30
|
-
@CreatedAt()
|
|
31
|
-
createdAt: Date
|
|
32
|
-
|
|
33
|
-
@UpdatedAt()
|
|
34
|
-
updatedAt: Date
|
|
35
|
-
}
|